我有一个带有多个单页的jQueryMobile应用程序,它们链接在一起。 其中一些页面使用常见的javascript文件。所以我目前只在需要它们的页面中导入那些javascripts。例如:
第A页 - >包括fileutils.js并有一个指向页面B的链接 第B页 - >包括fileutils.js
用户点击页面A的页面B.是否存在多次导入fileutils.js并多次执行其代码的风险?
提前致谢
答案 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。还有几个解决这个问题的方法,但我会在你想要的时候描述它们。