2012-04-26 62 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一样,页面拱也支持多种实践和策略。

您还可以通过使用桌面浏览器工具了解并查看“资源”以查看资源的加载时间和时间。