[英]jQuery Mobile page loses JavaScript file
我在使用 jQuery Mobile 时遇到了真正的问题,我尝试修复但失败了 :-(
我有一个导航来浏览我的应用程序,如果我单击与站点相关的链接,该站点具有用于执行某些功能的 .js 文件,则 .js 文件将丢失。 如果我查看萤火虫,我在<html>
代码的<head>
看不到我指定的“get-marker-id.js”。 如果我刷新页面,将出现 .js 文件并且一切正常,所有功能都已找到并且运行良好。
作为一种解决方法,我发现给导航的<a>
-Tag 一个rel=external
属性可以解决这个问题,因为该站点是完全加载的,而不是来自 ajax 调用。
现在我想知道我是否可以通过更好的解决方法解决问题? 因为如果我使用"rel=external"
,移动 Safari 会打开一个新标签,如果我将页面保存到我的主屏幕,这是我的客户不想要的 =(。我非常感谢帮助 :-)
如果我们假设我们从 jquery mobile 的简单单页模板开始,那么就会遗漏一些关键信息。 如果您希望拥有全局可用的函数和变量并能够更改框架的默认值,则需要在 jquery.js 和 jquerymobile.js 之间添加自定义脚本,如其全局配置页面所示。
<head>
...
<script src="jquery.js"></script>
<script src="custom-scripting.js"></script>
<script src="jquery-mobile.js"></script>
...
</head>
当您使用基于 ajax 的内置导航从一个页面转到下一个页面时,custom-scripting.js 中的所有内容仍然可供您使用,甚至可以用于在页面进入时对其进行操作。
但是,如果您在<div data-role="page">
放置了一个脚本,则只有在该页面就位时,您才有权执行该脚本。 一旦您导航到另一个页面,该初始页面将从 DOM 中删除,从而从您的脚本中删除。 因此,您需要在每个页面上调用您的脚本或将其放入 custom-script.js。 使用全局脚本将是一个性能更高的选项,因为移动设备中的 http 请求是导致大部分速度变慢的原因。
如果您链接到 .js 文件在您正在加载的页面中的 jquery-mobile“role-page”元素之外,则在通过 ajax 加载页面时根本不会解析它。 我不确定“角色页面”元素内的链接,但我知道内联脚本确实会被解析。 尝试在页面元素内移动脚本。
我在这里看到 2 件事,但无法决定哪个更适合移动应用程序?
1) 将您的 custom.js 放在 index.html 的 head 部分中的 jquery 和 jquerymobile 之间。
这样,您将拥有一个更大的 .js 文件,其中包含所有页面触发器(pageshow、pageinit ..),并且该文件只会加载一次(更少的 http 请求)
我遇到的问题:当您在某个页面上单击应用程序中间的浏览器重新加载按钮时,位于 custom.js 中的 ajax 等动态内容将不会加载。 结果:空白页。 (对于单页 jqm 应用程序中的页面书签的计数相同)
2) 在 data-role=page div 内的单页模板中的每个 JQM 页面上包含特定的自定义编码页面。
我的问题是:如何像 1) 那样有解决方案,但又支持页面重新加载
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.