jQueryMobile和javascript文件包含:潜在风险

时间:2013-07-31 10:54:18

标签: javascript jquery-mobile

我有一个带有多个单页的jQueryMobile应用程序,它们链接在一起。 其中一些页面使用常见的javascript文件。所以我目前只在需要它们的页面中导入那些javascripts。例如:

第A页 - >包括fileutils.js并有一个指向页面B的链接 第B页 - >包括fileutils.js

用户点击页面A的页面B.是否存在多次导入fileutils.js并多次执行其代码的风险?

提前致谢

1 个答案:

答案 0 :(得分:3)

你不必担心。让我向您解释jQuery Mobile的工作原理。

您所拥有的内容称为多 HTML 页面模板。在这种情况下,只有初始的 HTML 可以包含多个 data-role="page" 页面,其他每个后续页面只能有一个 {{ 1}} 页面里面。

初始化一个第一页,它完全加载到DOM中。该 data-role="page" 页面将成为未来页面加载的骨架。因为它已完全加载,所以内部可以容纳多个 HTML 页面。

当初始化下一页时,jQuery Mobile将删除所有内容并仅加载 data-role="page" 内容。其他一切都将被丢弃,包括HEAD内容。更多只会加载第一个 data-role="page" 页面,这意味着您内部不能有多个 data-role="page" 页面。

这意味着如果您在后续页面中有自定义javascript,则必须位于 data-role="page" div内,否则jQuery Mobile将丢弃它。

这适用于启用标准 data-role="page" 加载的情况,这是默认状态。如果关闭 AJAX 加载,jQuery Mobile将加载页面,就像它们是普通页面一样,每个后续页面都会替换DOM中的上一页。

关于你的另一个问题,由于这个架构相同的js文件永远不会初始化多次。但是还有另一个问题需要注意事件绑定。由于这种特定的体系结构,事件可以多次绑定一次。因此,您需要使用pageinit页面事件来初始化每页的javascript。还有几个解决这个问题的方法,但我会在你想要的时候描述它们。