1

我有这个 index.html 和 login.html,我使用 href 从索引链接到登录。并在每个 index.html 和 login.html 中导入 javascript。但是,似乎只有那些来自正在加载的 index.html。所以如果我将js放在login.html的index.html中,它工作正常。但是然后,我们将它分开放置(login.html 的另一个 js 不在 index.html 中),它不起作用

TIA

4

3 回答 3

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()。IE

$(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 应用程序而不是 phonegap 应用程序,那么您最好将您的 javascript 放在一个文件中并将其包含在每个页面中。这样,如果有人关注链接或为您的页面添加书签,他们仍将获得所需的正确 javascript 文件。

无论如何,我希望对您有所帮助。祝你好运!

于 2012-04-26T08:58:01.970 回答
0

请发布您的代码,特别是页面如何相互链接,以及您为应用程序设置的全局配置设置(如果有)。与 jQM 一样,页面架构支持多种实践和策略。

您还可以使用桌面浏览器工具进行学习,并查看“资源”以了解您的资源是在什么时候加载的。

于 2012-04-26T21:17:16.990 回答
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 推荐的方法,那么您只需要加载脚本一次。后一种方法是最好的方法。

于 2012-04-26T08:59:32.377 回答