JQuery Mobile Change Page不会加载JS文件

时间:2012-05-10 18:35:49

标签: javascript jquery jquery-mobile

为了更好地组织我们的JQuery Mobile PhoneGap应用程序,我希望能够在新页面上使用标签,并在页面被引入时使用changePage或其他东西进入JS。

到目前为止,我努力做到这一点并没有产生我想要的东西。除非我在index.html上包含所有JS文件,然后在PageShow事件处理程序中编写条件逻辑,这不是一个好的解决方案。

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

为了向使用jQuery Mobile加载的页面(通过AJAX)引入新的JS包含,您必须在每个页面的data-role="page"或(data-role="dialog")元素中引用这些文件,因为jQuery Mobile不在AJAX页面加载期间处理这些元素之外的任何内容。

或者,您可以使用JavaScript在每次页面转换的“pageshow”事件中动态创建新的script标记。像这样:

$(document).on('pageshow', 'div[data-role*="page"],div[data-role*="dialog"]', function () {
     (function () {
        var script = document.createElement('script'); script.type = 'text/javascript'; script.async = true;
        script.src = '/path/to/new/include.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(script, s);
    })();
});

答案 1 :(得分:1)

我也有一个类似的问题,通过修复<script>标签的位置无法解决。看来如果你的代码中有编译错误(在我的情况下,在声明for循环变量时放置int而不是var),整个脚本将不会被加载并且不会抛出日志错误(至少不是Eclipse的Android模拟器中的LogCat)。确保首先通过JSLint等错误检查程序运行脚本。

答案 2 :(得分:0)

简单地在“div data-role ='页面'中移动您的JS代码自JQM将开始休息