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 页面加载事件委托 javascript 触发两次
即使我不要求 jQuery mobile 将页面加载到 DOM 中
IBM Worklight 6.0 - 富页面编辑器不加载 jQuery Mobile CSS