2

我需要一个带有自定义标题的弹出窗口(让它从应用程序的 index.html 中出现看起来很俗气)。

我尝试了以下链接末尾的建议:

在 iOS 中使用 PhoneGap HTML 自定义 JavaScript 警报

所以我在脚本部分的 index.html 中添加了以下代码:

   function showMessage(message, callback, title, buttonName){

        title = title || "default title";
        buttonName = buttonName || 'OK';

        if(navigator.notification && navigator.notification.alert){

            navigator.notification.alert(
                message,    // message
                callback,   // callback
                title,      // title
                buttonName  // buttonName
            );

        }else{

            alert(message);
            callback();
        }

    }

更新

我有以下警报代码;

if ((inputNumber>maxAllowed))
        {
        showMessage("The input is too high.",null,"Warning","Warning");
        }

编译应用程序后,这不起作用。

以下在 index.html 中:

    document.addEventListener("deviceready", onDeviceReady, false);

            function onDeviceReady() {
            // Now safe to use the PhoneGap API
            }

<function shown above is here>

知道为什么这仍然不起作用吗?从 index.html 显示

谢谢你。

亲切的问候,

加里·舍吉尔

4

5 回答 5

8

此错误告诉您该功能navigator.notification不存在。

通常这是因为:

  1. Phonegap/Cordova 未在 HEAD 内初始化
  2. 函数未在 deviceready 事件中初始化。在 cordova.js 完全初始化之前基本上不能调用函数。

    document.addEventListener("deviceready", onDeviceReady, false);
    
    function onDeviceReady() {
        // Now safe to use the PhoneGap API
    }
    
于 2013-07-04T12:28:46.887 回答
3

这是我在 PC 上测试 Phonegap 应用程序时使用的一个功能。我在移动设备上部署应用程序时将其删除。它用于确认功能,但您可以将其调整为警报等。

    // TODO: remove on deploy
    navigator.notification = {
        confirm: function (message, successCallback) {
            successCallback(1);
        }
    };
于 2015-01-08T16:32:53.573 回答
0

您正在浏览器中进行测试,因此navigator.notification未定义。此外,您似乎添加了该功能showMessage,但您没有使用它。尝试:

showMessage("The value is too high!", null,"Warning", "Warning");
于 2013-07-04T12:30:43.770 回答
0

在电话中,请注意回调不是字符串。所以在你的函数中,你给它传递了一个字符串,这会导致它出现问题。

http://docs.phonegap.com/en/1.0.0/phonegap_notification_notification.md.html

navigator.notification.alert(
    'You are the winner!',  // message
    alertDismissed,         // callback
    'Game Over',            // title
    'Done'                  // buttonName
);

我看到情况就是这样,因为我也在尝试这样做。所以不幸的是你不能覆盖回调,你需要“硬编码”它。

于 2014-01-10T00:43:14.053 回答
0

我已经使用 CLI 添加了插件,例如:

$ cordova plugin add cordova-plugin-dialogs

它对我来说工作正常。

于 2016-05-03T13:06:20.260 回答