jQuery Mobile + PhoneGap 一个 href 和 javascript 源



我有这个索引.html和登录.html我使用 href 从索引链接到登录名。 在每个索引中.html和登录.html我导入javascript。但是,似乎只有那些来自正在加载的索引.html索引。因此,如果我将 js 放在索引中.html用于登录.html,它工作正常。但是,我们将其单独放置(另一个用于登录的js.html不在index.html中),它不起作用

蒂亚

当 JQM(jQuery mobile) 加载页面时,它使用 ajax 来实现此目的。发生这种情况时,将忽略<head>节中的所有代码。JQM 查找 data-role="page" 部分,并将其插入到与 index.html 相同的 dom 中。所以基本上当你在索引.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"
});

因此,请继续将所有代码放在一个文件中。将代码拆分为适当的页面,如上所示,并将其包含在索引.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应用程序而不是Phonegap应用程序,那么将javascript放在该文件中并将其包含在每个页面中是明智的。这样,如果有人点击链接或为您的页面添加书签,他们仍然可以获得所需的正确 javascript 文件。

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

如果您正在执行window.location.href,那么它将加载新的 HTML(在您的情况下是登录.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 推荐的方法,则只需加载一次脚本。后一种方法是最好的方法。

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

您还可以使用桌面浏览器工具进行学习,并查看"资源"以查看加载资源的内容和时间。

最新更新