2012-03-26 74 views
0

我在使用谷歌定位服務的網站的移動版本中有幾頁。我正在使用changePage Ajax函數來瀏覽網頁。在第一頁加載位置服務工作正常,如果我去不同的頁面,回去它不。如何使用jquery mobile重新加載頁面上的外部javascript更改?

當我添加rel="external"它可以工作,但問題是它重新加載整個頁面,這對桌面應用程序來說不是什麼大問題,但在移動設備上看起來不太好。

我嘗試添加reloadPage = true到changePage但它並沒有任何區別

有什麼辦法重裝只是位置服務,而無需重新加載整個頁面?

例子:

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false" ></script> 

$("#btn-loc").click(function() { 
     $.mobile.changePage("#btn-loc", { reloadPage: true }, { transition: "slide" }); 
    }); 
+0

是否使用了頁面加載事件或pageChange/pageShow調用谷歌服務?頁面加載事件只針對初始頁面,而不是通過AJAX加載的其他頁面。 – gapple 2012-03-26 17:54:11

+0

我在頁面頂部引用了頁面加載事件。你知道我可以如何加載pageChange事件嗎? – Steven 2012-03-26 18:27:23

回答

0

當您使用reloadPage : true你必須引用外部頁面的位置,即僞頁面元素的不是ID:

$("#btn-loc").click(function() { 
    $.mobile.changePage("/btn-loc.html", { 
     reloadPage : true, 
     transition : "slide" 
    }); 
}); 

還要注意我如何傳遞在選項對象中,應該只有一個包含要在單個對象中設置的所有屬性。

reloadPage布爾,默認:FALSE)

強制頁面重新加載,即使它已經在頁容器的DOM。

  • 僅當changePage()的'to'參數是URL時才使用。

來源:http://jquerymobile.com/demos/1.1.0-rc.1/docs/api/methods.html

更新

要通過JS腳本添加到DOM,你可以使用谷歌的分析代碼:

<script> 
    (function() { 
     var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; 
     ga.src = '/path/to/my-file.js'; 
     var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); 
    })(); 
</script> 
+0

我嘗試了你的建議。它和我的代碼一樣。它不會加載外部文件 Steven 2012-03-26 17:30:58

+0

如果您在該文件的頭部包含該文件那麼文檔會在AJAX導航時被忽略。將include包含在'data-role =「頁面的''元素中,或者以編程方式將腳本添加到DOM中。 – Jasper 2012-03-26 18:36:04

+0

它在data-role =「page」內。你能告訴我如何以編程方式向DOM添加腳本嗎? – Steven 2012-03-26 18:42:41

相關問題