2012-04-26 61 views
1

我有這個index.html和login.html,我使用href鏈接從索引到登錄。並在每個index.html和login.html中導入javascript。但是,似乎只有那些來自正在加載的index.html。所以如果我把index.html中的js放在login.html中,它可以正常工作。但後來,我們分開我把它(另一個爲JS的login.html不在的index.html),它不工作jQuery Mobile + PhoneGap a href和javascript源碼

TIA

+0

在jQuery手機中,您不會爲每個頁面創建一個文件。或者,您應該只有一個index.html文件和您的所有頁面。 http://jquerymobile.com/demos/1.1.0/docs/about/getting-started.html – deadlock 2012-04-26 06:34:06

+1

實際上,不使用多頁面策略是非常好的。該文件甚至說:http://jquerymobile.com/demos/1.1.0/docs/pages/page-anatomy.html。多HTML頁面應用程序必須禁用元素中的rel =「external」或$ .mobile.ajaxEnabled = false的ajax。 – Libby 2012-04-26 21:12:37

回答

4

當JQM(jQuery Mobile的)加載它使用AJAX來完成一個頁面這個。發生這種情況時,<head>部分中的所有代碼均被忽略。 JQM查找data-role =「page」部分並將其插入與index.html相同的dom中。因此,基本上,當您在index.html頁面中添加js時,您正在以正確的方式進行操作。

如果您想劃分你的js代碼的工作對特定網頁的使用示例:

$(document).on('pageinit', '#page1', function(){ 
    // code for #page1 
}); 
$(document).on('pageinit', '#page2', function(){ 
    // code for #page2 
}); 
$(document).on('pageinit', '[data-role=page]', function(){ 
    // this code will execute for every page that is data-role="page" 
}); 

因此,繼續前進,並把所有的代碼在一個文件中。將您的代碼拆分爲上述相應的頁面,並將其包含在index.html文件中。

另外,如果您使用JQM版本1.0.1和jQuery版本1.6.4(推薦使用1.0.1),請使用.delegate()而不是.on()。即

$(document).delegate('#page1', 'pageinit', function(){ // notice that pageinit and #page1 are switched around for delegate 
    // code for #page1 
}); // interesting to note that if you use delegate in jQuery 1.7.x it actually just calls the .on() method. 

注意如果你做一個Web應用程序,而不是你會聰明地把你的JavaScript在那一個文件和PhoneGap的應用程序包括,在每一個頁面。這樣,如果有人正在關注鏈接或爲網頁添加書籤,他們仍然會獲得他們需要的正確的JavaScript文件。

反正我希望能幫到你。祝你好運!

0

如果你正在做一個window.location.href那麼它會加載新的HTML(在你的情況下它是login.html)如果你使用這種方法,那麼你必須重新加載你所有的腳本,因此在所有你的腳本中添加這些腳本.html頁面。

<script src="cordova-1.6.0.js" type="text/javascript"></script> 
<script type="text/javascript" src="jquery/jquery-1.7.1.min.js"></script> 
<link rel="stylesheet" href="jquerymobile/jquery.mobile-1.1.0.min.css" /> 
<script type="text/javascript" src="jquerymobile/jquery.mobile-1.1.0.min.js"></script> 

但是,如果您使用@deadlock推薦的方法,那麼您只需要加載腳本一次。後面的方法是最好的。

0

請發佈您的代碼,特別是如何鏈接到對方,以及您爲應用程序設置的全局配置設置(如果有的話)。與jQM一樣,頁面拱也支持多種實踐和策略。

您還可以通過使用桌面瀏覽器工具瞭解並查看「資源」以查看資源的加載時間和時間。