2012-07-12 26 views
3

基本上,我想處理哈希監聽以及我自己代碼中的所有內容,但是我無法讓jQM停止監聽哈希變化事件,並且通常不會使用URL。我從他們的文檔試圖代碼:如何阻止jQuery Mobile使用window.location執行任何操作?

$(document).bind('mobileinit', function() { 
    $.extend($.mobile, { 
     hashListeningEnabled: false, 
     pushStateEnabled: false, 
     ajaxEnabled: false, 
     linkBindingEnabled: false 
    }); 
}); 

的mobileinit事件就都不曾在第一頁負載點火雖然(即使它看起來像它應該),這樣就不會爲我工作。讓代碼執行的代碼是將它放在$(window).bind('load')中,我可以通過$.mobile.hashListeningEnabled === false驗證Firebug控制檯中的值是否正確設置 - 但是,它們看起來並不像做任何事!當我在地址欄中輸入<mysite>/index.html時,它會加載我的默認頁面,但是如果我輸入<mysite>/index.html#anything它只顯示jQM加載微調器並且從不加載任何東西(我推測它是因爲它正在尋找文件內有data-role=anything的頁面,是它的默認功能)。此外,pushStateEnabled覆蓋顯然無法正常工作,因爲如果我運行window.location.hash = /somethingelse.html,則任何受支持的瀏覽器中的URL欄將顯示http://<mysite>/somethingelse.html,而不是預期的http://<mysite>/index.html#somethingelse.html

基本上,我想要的是jQuery Mobile來處理頁面佈局和DOM操作,絕對沒有別的。這可能嗎?

回答

4

我不知道這些是否設置正確的屬性(沒有檢查文檔),但我之前有過這個問題。爲了解決這個問題,你需要你包括腳本,以便在此之前,以綁定事件:

<script type="text/javascript"> 
    $(document).bind('mobileinit', function() { 
     $.extend($.mobile, { 
      hashListeningEnabled: false, 
      pushStateEnabled: false, 
      ajaxEnabled: false, 
      linkBindingEnabled: false 
     }); 
    }); 
</script> 
<script src="//code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.js"></script> 

必須這樣做的原因是,當jQuery Mobile的文件被加載mobileinit事件觸發。

+0

謝謝,這樣做!事實證明,它確實表明,在文檔中,我想我必須以某種方式掠過它。 – jcsmnt0 2012-07-12 14:44:34

+0

您的歡迎,我花了一段時間才弄清楚了第一個復飛。 – 2012-07-12 15:23:17

相關問題