如何以编程方式解除手机缓冲通知

时间:2011-08-31 00:27:40

标签: javascript jquery ios cordova

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

任何想法或解决方案?

谢谢!

3 个答案:

答案 0 :(得分:2)

嘿,我已经为此修改了java文件。 SRC /机器人/ Notification.java

添加了对dlg.create()

的引用

首先声明这个..

private AlertDialog alertbox;

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

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

要添加的方法:

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

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

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,"");

这将解除所有打开的提醒/确认/提示。

答案 1 :(得分:1)

您无法以编程方式关闭alert()对话框,否。

但是,您可以执行的操作不是使用alert()实现您自己的自定义叠加层,其外观/行为类似于警报,然后您可以随时轻松解除该问题。这里还有一些额外的讨论:

Javascript close alert box

修改

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

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

Hide UIAlertView programmatically?

答案 2 :(得分:0)

也许用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;
}