在我學習JQM時,我發現JQM不像普通瀏覽器那樣加載頁面。它只是提取內容並更新DOM。如何知道使用jQuery Mobile加載的頁面?
當所請求的頁面加載,jQuery Mobile的解析文檔爲 與數據角色=「頁」屬性的元素,並插入該代碼 成原始頁面的DOM。
我在物理頁面和JQM頁面之間混合。頁面使用PHP加載,我的tempalte代碼loosk是這樣的:
include('views/widgets/head.php');
include($view);
include('views/widgets/footer.php');
視圖和PHP頁面一樣。
頭版
網址:mysite.com
頁數:#frontPage
網頁B
網址:mysite.com/page-b
頁數:#listPage,#infoPage, #mapPage
Page C
URL:mysite.com/page-c
頁數:#listPage,#infoPage,#mapPage
我目前的解決方案是,包裹多頁的容器:
這或許可以解釋爲什麼我有這個代碼問題:
if($('#frontPage').length > 0) { Lib.setTitle('Front Page'); }
if($('#pageB').length > 0) { Lib.setTitle('Page B'); }
if($('#pageC').length > 0) { Lib.setTitle('Page C'); }
每當我回到我的首頁,似乎第一條語句被觸發,然後被最後一條觸發語句覆蓋。我知道,因爲標題首次被設置爲「首頁」時閃爍,然後被「頁面C」覆蓋。
我應該使用像pageload, pagebeforeload, pagebeforeshow
這樣的事件,但它們有很多和「相似」,我不確定要使用哪一個。
什麼是「正確」的方式來確定我正在加載哪個頁面,以便我可以執行正確的功能?
執行加載的任何頁面的全局函數的正確代碼是什麼?
更新
所有自定義JS文件在全局/外部頁腳加載。
有你每個頁面都有一個Js文件。如page1.html-page1.js和page2.html-page2.js。在你的html文件中,你只需引用你需要的js,在你的page1上你確定只有page1.js被調用。如果你想要一個全局的js,你需要把它放在每一個不需要知道上下文的函數上,比如構造一個數組或者類似的東西。 – dpfauwadel 2015-02-10 08:19:02
不,我的自定義JS文件加載在全球/外部頁腳 – Steven 2015-02-10 08:23:38