为了更好地组织我们的 JQuery Mobile PhoneGap 应用程序,我希望能够在新页面上使用标签,并在引入页面时使用 changePage 或其他方式让 JS 进入。
到目前为止,我为此所做的努力并没有达到我想要的效果。除非我在 index.html 上包含所有 JS 文件,然后在 PageShow 事件处理程序中编写条件逻辑,这不是一个好的解决方案。
有什么想法吗?
为了更好地组织我们的 JQuery Mobile PhoneGap 应用程序,我希望能够在新页面上使用标签,并在引入页面时使用 changePage 或其他方式让 JS 进入。
到目前为止,我为此所做的努力并没有达到我想要的效果。除非我在 index.html 上包含所有 JS 文件,然后在 PageShow 事件处理程序中编写条件逻辑,这不是一个好的解决方案。
有什么想法吗?
要将新的 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);
})();
});
我也有一个类似的问题,没有通过修复<script>
标签的位置来解决。似乎如果您的代码中有编译错误(在我的情况下,int
不是var
在声明 for 循环变量时放置),整个脚本将不会被加载并且不会向日志抛出任何错误(至少,不会Eclipse 的 Android 模拟器中的 LogCat)。确保首先通过 JSLint 之类的错误检查器运行您的脚本。
只需在 "div data-role='page' 中移动您的 JS 代码,因为 JQM 将跳过其余部分