【发布时间】:2011-08-31 00:27:40
【问题描述】:
有没有办法以编程方式解除 navigator.notification.alert()?当出现定位服务错误时,我会发出警报,但如果它清除,我宁愿将其关闭,而不是要求用户手动执行。
有什么想法或解决方案吗?
谢谢!
【问题讨论】:
标签: javascript jquery ios cordova
有没有办法以编程方式解除 navigator.notification.alert()?当出现定位服务错误时,我会发出警报,但如果它清除,我宁愿将其关闭,而不是要求用户手动执行。
有什么想法或解决方案吗?
谢谢!
【问题讨论】:
标签: javascript jquery ios cordova
嘿,我已经为此更改了 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,"");
这将关闭所有打开的警报/确认/提示。
【讨论】:
您不能以编程方式关闭alert() 对话框,不。
但是,您可以做的不是使用alert(),而是实现您自己的自定义叠加层,该叠加层的外观/行为类似于警报,然后您可以随时轻松地将其关闭。这里有一些额外的讨论:
编辑
我对此做了一个bit more investigation,我不再相信Phonegap alert() 对话框实际上与本机JavaScript 对话框相同。他们正在使用一些巧妙的技巧来回调本机代码(在 Android 和 iOS 上)以显示警报。
因此,可能可以通过编程方式关闭对话框,但几乎可以肯定不是直接在您的 JavaScript 代码中。您需要使用一些类似的技巧从 JavaScript 回调到本机代码,然后定位并关闭 Phonegap 警报视图。第一部分可能相当困难。第二部分是微不足道的:
【讨论】:
也许可以用 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;
}
【讨论】: