2013-02-18 51 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,但看起來有一個回調導致瀏覽器返回彈出窗口的位置。