2011-12-19 60 views
4

嘿傢伙有一個與jQuery Mobile真正的問題,我試圖解決,但我失敗了:-( 我有一個導航瀏覽低谷我的應用程序,如果我點擊一個鏈接這與一個網站有關,它有一個用於執行某些功能的.js文件,.js文件丟失了。如果我看着螢火蟲,我沒有看到我指定的「get-marker-id.js」如果我刷新頁面,.js文件出現,並且一切正常,所有功能都找到並且工作完美。jQuery Mobile頁面丟失JavaScript文件

作爲一種解決方法,我發現爲了給導航的標籤rel=external屬性解決了這個問題,因爲該站點是完全加載的,而不是從ajax調用。

現在我想知道我是否可以用更好的解決方法解決問題?因爲如果我使用"rel=external",移動Safari會打開一個新的Tab,如果我已將頁面保存到我的主屏幕,並且這是我的客戶不想要的=(。我非常感謝幫助:-)

回答

3

如果我們假設我們從jquery mobile的簡單的single page template開始,那麼就會忽略一些關鍵信息。如果你想擁有全局可用的函數和變量,並且能夠改變框架的默認值,你需要在jquery.js和jquerymobile.js之間添加自定義腳本,如global configurations page所示。

<head> 
    ... 
    <script src="jquery.js"></script> 
    <script src="custom-scripting.js"></script> 
    <script src="jquery-mobile.js"></script> 
    ... 
</head> 

當你從一個頁面轉到下一個與內置的基於AJAX導航,一切都在定製scripting.js仍然會提供給你甚至可以用來操縱頁面作爲自己的未來英寸

但是,如果您將腳本放入<div data-role="page">的內部,只要該頁面就位,您將只能執行該操作。一旦您導航到另一個頁面,該初始頁面將從DOM中刪除,從而刪除您的腳本。因此,您需要在每個頁面上調用腳本或將其放入custom-script.js中。使用全局腳本將是一個更具性能的選項,因爲移動設備中的http請求是導致大部分速度減慢的原因。

+0

1)問題指出,使用'相對=「外部」'作品這表明該網站是不是單頁面模板,但有幾個鏈接的HTML文檔。 2)如果你綁定到'mobileinit'事件(這是你如何配置默認值,所以你是對的),你只需要在你建議的莊園中包含外部JS。 3)如果你將JS放在'data-role =「page」'元素中,它們將被包含在AJAX調用中,但是當該頁面從DOM中刪除時,JS仍然可用。最後我相信最好的解決方案是在每個頁面上包含'custom' JS文件。 – Jasper 2011-12-19 22:16:48

+0

正確的,單頁面模板是一個獨立的頁面,可以像鏈接的HTML文檔一樣工作,並且可以被AJAX調用。我把它稱爲假設它是一個起點,正如你所說,它是由rel =外部。多頁面模板是在單個DOM中有幾個「頁面」的模板,他的例子顯然不是。認爲我們只是有一點語義問題。 – sgliser 2011-12-19 22:39:47

+0

我同意你對每個頁面上包含的自定義js文件的最新評論。如果用戶刷新了幾頁,不這樣做可能會導致失敗的頁面。我應該在我原來的發帖中調出該頁面。謝謝賈斯帕。一如既往,你達人。 – sgliser 2011-12-19 22:41:38

2

如果你指向.js文件的鏈接位於您正在加載的頁面中的jquery-mobile「角色頁面」元素之外,當通過ajax加載頁面時,它根本不會被解析。 我不確定關於「角色頁面」元素中的鏈接,但我知道內聯腳本確實會被解析。嘗試在頁面元素內移動腳本。

0

我在這裏看到2件事,不能決定什麼是更好的移動應用程序?

1)將你的custom.js放在jquery & jquerymobile之間的index.html頭部分。

  • 這種方式,你將有一個較大的.js的所有網頁觸發(pageshow,pageinit ..)內,該文件將只加載一次(更少的HTTP請求)

  • 文件我遇到的問題:當您在應用程序中間點擊瀏覽器重新加載按鈕時,位於custom.js中的動態內容(如ajax等)將無法加載。結果:空白頁面。在數據角色=頁面格內的單頁模板每JQM頁 - (爲書籤的頁面在單頁JQM應用程序相同的計數)

2)包括特定的自定義代碼頁。

  • 我假設現在當重新加載谷瀏覽器按鈕代碼也將重新加載(它在那裏),但再次,更大的網頁。

我的問題是:如何能有像在1解決方案),但隨後再次支持頁面重載