jQuery mobile 不加载新页面脚本

Posted

技术标签:

【中文标题】jQuery mobile 不加载新页面脚本【英文标题】:jQuery mobile not loading new page scripts 【发布时间】:2012-03-14 04:03:04 【问题描述】:

在 Django 中使用 jQuery Mobile:在页面转换期间,基本脚本似乎可以正常加载,但是从一页到下一页,标题下的新页面脚本不会在浏览器中加载。

更具体一点:

    我通过输入网址加载我的主页,一切正常。 我通过单击主页中的链接加载下一页,然后 DOM 加载,但与页面标题中的页面关联的脚本, 不要加载。 如果我刷新这个页面,或者我输入这个页面的 URL 直接在浏览器中(绕过页面转换),页面 以应有的方式加载脚本。

我知道 jquery mobile 尝试使用 ajax 实现页面转换,但我希望我可以将脚本保留在页眉/页脚中。我不想把脚本放在<div data-role="page" >

【问题讨论】:

我最终覆盖了 ajax 加载功能,并使用了 $.mobile.ajaxEnabled = false; 【参考方案1】:

这是因为 jQuery Mobile 只加载 DOM 中第一个 data-role="page" 元素内的代码。

您可以从以下几个选项中选择如何解决此问题:

    您可以将页面特定的 JS 放在 data-role="page" 元素中,这样当 jQuery Mobile 通过 AJAX 加载页面时就会加载它。 您可以将所有代码放在一个 JS 文件中,并将其包含在网站的每个页面中,它只会在整页刷新时加载,但这样您网站的所有代码将始终可用(在缩小和压缩之后,您确实必须编写大量代码才能使其效率低下)。

我确信还有其他方法,但这里有一些我为我工作过的方法。

【讨论】:

正是我所害怕的。谢谢 我刚刚对此进行了测试,它仍然从我的内部删除了脚本标签,并且只有<div data-role="page"> 标签。脚本标签被删除或不呈现一定有另一个原因。 我还应该注意,javascript 确实运行了,只是没有显示出来。【参考方案2】:

如果你只有一两个页面需要 JS 加载,这就是我所做的。您网站上任何链接到该页面的链接都应强制“加载”新页面。

将此添加到链接

rel="external"

【讨论】:

这就是我所采用的方法,但是通过向表单元素添加标签以使其行为方式相同 - 不使用 ajax【参考方案3】:

我尝试将其添加到链接中,它对我有用

target="_parent"

当我将它添加到我的链接时(我仍然有 rel="external"),它提供了帮助,并且另一个页面加载了所有完整的脚本:)

【讨论】:

以上是关于jQuery mobile 不加载新页面脚本的主要内容,如果未能解决你的问题,请参考以下文章

加载新页面后未呈现文本 - JQuery Mobile

jQuery Mobile 页面加载事件委托 javascript 触发两次

即使我不要求 jQuery mobile 将页面加载到 DOM 中

IBM Worklight 6.0 - 富页面编辑器不加载 jQuery Mobile CSS

列表视图在 jQuery mobile/phonegap 中初始时未加载

jQuery Mobile:渲染新元素但不触发动作