1

我在 Cordova (phonegap) 中重复警报时遇到问题,javascript 如下所示:

navigator.notification.alert(
                'Something is amiss',  // message
                function(){},         // callback
                'DatabaseManager error processing SQL',            // title
                'Ok'                  // buttonName
            );

当我导航到另一个页面时,例如使用后退按钮,警报会再次显示。如果我进一步导航,警报会重复 x2 次,依此类推。

注意:即使我尝试不同的导航方法也会发生这种情况,例如:

$.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>
4

1 回答 1

0

这个问题是由于回调方法再次运行造成的,这在嵌套回调时尤其会出现问题 - 这会导致复杂的调试场景。我发现的一个例子是 jquery 移动弹出窗口中的一个错误(在 android 上)。我在回调中放置了一个 changePage 导航(在弹出关闭或类似的情况下)。回调调用 changePage 就像它应该的那样,但似乎有一个回调导致浏览器返回到弹出窗口发生的位置。

于 2013-02-28T13:24:01.227 回答