我在 Cordova (phonegap) 中重复警报时遇到问题,javascript 如下所示:
navigator.notification.alert(
'Something is amiss', // message
function(){}, // callback
'DatabaseManager error processing SQL', // title
'Ok' // buttonName
);
当我导航到另一个页面时,例如使用后退按钮,警报会再次显示。如果我进一步导航,警报会重复两次,依此类推。
注意:即使我尝试不同的导航方法,也会发生这种情况,例如:
$.mobile.changePage("LogOn.html");
window.location.href = "LogOn.html";
<a href="#" data-rel="back" data-icon="back">back</a>
我发现当我离开页面时(但仅在某些情况下),脚本通常会运行两次(警报只是一个示例)。我怀疑发生这种情况是因为我在警报中显示了一个错误,并且该错误导致脚本以某种神奇的方式再次运行。关于可能的原因有什么想法吗?
奖金信息: 我使用单页模型(一页 pr html 文件),加载 init 并从 html 运行我的脚本,如下所示:
<script src="../js/PickMode.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).bind("pageinit", function() {
initPickMode(); //this method lives in PickMode.js
});
</script>
最佳答案
此问题是由于回调方法再次运行而导致的,这在回调嵌套时尤其是一个问题 - 这会导致复杂的调试场景。我发现的一个例子是 jquery mobile 弹出窗口(在 Android 上)中的一个错误。我在回调中放置了一个changePage导航(在弹出窗口关闭或类似的情况下)。该回调按其应有的方式调用了changePage,但似乎有一个回调导致浏览器返回到弹出窗口发生的位置。
关于javascript - Cordova 警报在导航上重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14936909/