1

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

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

有什么想法吗?

4

3 回答 3

2

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

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

$(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);
    })();
});
于 2012-05-10T18:44:07.943 回答
1

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

于 2012-08-07T13:18:13.653 回答
0

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

于 2013-06-27T16:49:25.567 回答