2013-02-18 63 views
1

我有在科尔多瓦(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> 

I'f发现脚本通常运行两次(警报都只是一个例子),当我从一个页面导航离去(但仅限于某些场合)。我怀疑发生这种情况是因为我在警报中显示错误,并且错误导致脚本以某种神奇的方式再次运行。任何想法可能是什么原因?

奖金信息: 我使用单页模型(一个页面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> 

回答

0

此问题是由于回调方法得到再次运行,这在回调嵌套时尤其是问题 - 这会导致复杂的调试场景。我发现的一个例子是jquery mobile popup(在android上)中的一个bug。我在回调中放置了一个changePage导航(在弹出式关闭或类似的东西上)。该回调像它应该那样调用changePage,但看起来有一个回调导致浏览器返回弹出窗口的位置。