【问题标题】:JQuery Mobile Change Page doesnt load JS filesJQuery Mobile Change Page 不加载 JS 文件
【发布时间】:2012-05-10 18:35:49
【问题描述】:

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

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

有什么想法吗?

【问题讨论】:

    标签: javascript jquery jquery-mobile


    【解决方案1】:

    要将新的 JS 包含到使用 jQuery Mobile 加载(通过 AJAX)的页面中,您必须在每个页面的 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);
        })();
    });
    

    【讨论】:

    • 感谢您的回复,实际上是在提出问题后不久就找到了这个答案。你确认了
    【解决方案2】:

    我也遇到了类似的问题,但修复<script> 标签的位置并没有解决。似乎如果您的代码中有编译错误(在我的情况下,在声明 for 循环变量时使用 int 而不是 var),整个脚本将不会被加载并且不会向日志抛出任何错误(至少,不是 Eclipse 的 Android 模拟器中的 LogCat)。请务必先通过 JSLint 之类的错误检查器运行您的脚本。

    【讨论】:

      【解决方案3】:

      在 "div data-role='page' 中简单地移动您的 JS 代码,因为 JQM 将跳过其余部分

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-05-15
        • 1970-01-01
        • 1970-01-01
        • 2012-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多