【问题标题】:How to dismiss a phonegap notification programmatically如何以编程方式关闭 phonegap 通知
【发布时间】:2011-08-31 00:27:40
【问题描述】:

有没有办法以编程方式解除 navigator.notification.alert()?当出现定位服务错误时,我会发出警报,但如果它清除,我宁愿将其关闭,而不是要求用户手动执行。

有什么想法或解决方案吗?

谢谢!

【问题讨论】:

    标签: javascript jquery ios cordova


    【解决方案1】:

    嘿,我已经为此更改了 java 文件。 src/android/Notification.java

    添加了对 dlg.create() 的引用

    首先声明这个..

    private AlertDialog alertbox;
    

    然后添加一个从 javascript 发送“解雇”的案例

    else if (action.equals("dismiss")) {
         this.dismissAll();
    }
    

    待添加方法:

    public void dismissAll(){
        alertbox.dismiss();
    }
    

    记得在通知插件的 www 文件夹中的 notification.js 中添加相同的内容

    dismiss: function(message, completeCallback, title, buttonLabel) {
        var _title = (title || "Alert");//Doesnt Matter!
        var _buttonLabel = (buttonLabel || "OK");//Doesnt Matter!
        exec(completeCallback, null, "Notification", "dismiss", [message, _title, _buttonLabel]);
    },
    

    现在添加

    alertbox = dlg.create();
    alertbox.show();
    

    而不是

    dlg.create();
    dlg.show();
    

    在所有地方。

    你可以打电话了

    navigator.notification.dismiss("",null,"");
    

    这将关闭所有打开的警报/确认/提示。

    【讨论】:

      【解决方案2】:

      您不能以编程方式关闭alert() 对话框,不。

      但是,您可以做的不是使用alert(),而是实现您自己的自定义叠加层,该叠加层的外观/行为类似于警报,然后您可以随时轻松地将其关闭。这里有一些额外的讨论:

      Javascript close alert box

      编辑

      我对此做了一个bit more investigation,我不再相信Phonegap alert() 对话框实际上与本机JavaScript 对话框相同。他们正在使用一些巧妙的技巧来回调本机代码(在 Android 和 iOS 上)以显示警报。

      因此,可能可以通过编程方式关闭对话框,但几乎可以肯定不是直接在您的 JavaScript 代码中。您需要使用一些类似的技巧从 JavaScript 回调到本机代码,然后定位并关闭 Phonegap 警报视图。第一部分可能相当困难。第二部分是微不足道的:

      Hide UIAlertView programmatically?

      【讨论】:

        【解决方案3】:

        也许可以用 div 或其他元素创建一个对话框,然后将其显示给用户,以便您轻松将其关闭。

        JavaScript

        function geo_error() {
            //only append error message if none exists
            if ($('#page_container').find('.geo_error').length == 0) {
                $('#page_container').append('<div class="geo_error">A Geolocation Error Has Occured</div>');
            }
        }
        function get_success(position) {
            //hide the error message on success
            $('#page_container').find('.geo_error').hide();
        }
        

        CSS

        .geo_error {
            position: absolute;
            top: 10px;
            bottom: 10px;
            left: 20px;
            right: 20px;
            z-index: 1000;
        }
        

        【讨论】:

          猜你喜欢
          • 2021-01-17
          • 2015-09-10
          • 1970-01-01
          • 2021-08-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-03-27
          • 1970-01-01
          相关资源
          最近更新 更多