我从JQM页面得到了一个奇怪的行为。
我正在使用带有eclipse IDE的phonegap-android 4.4.2。
网页代码:
<html>
<head></head>
<body>
<div data-role="page" id="folfirstForm" data-dom-cache="true">
<link rel="stylesheet" href="../../css/follow_up.css">
<script src="../../js/addProdLine.js"></script>
<script type="text/javascript">
$(document).off("pageshow", "#folfirstForm").on("pageshow", "#folfirstForm", function() {
alert("First form loaded!");
AddElement();
});
</script>
----Some body----
</body>
</div>
</div>
</html>
您可以根据我的要求查看我放置data-dom-cache="true"
的代码。我还包含名为addProdLine.js
的js文件,其中包含我需要的函数(例如AddElement()
来自包含文件)。
现在,当我第一次访问此页面时,所有功能都能正常运行。在第二次访问同一页面时,我得到了之前的形式状态,这是预期的,因为我放了data-dom-cache="true"
。但可能是由于data-dom-cache="true"
我的外部js文件未在第二次访问同一页面时被加载。我想,在每次访问时,我的js文件应该运行。
答案 0 :(得分:0)
Jquery mobile仅在加载整个文档时加载标记一次。如果您单击其他链接,则加载文档后,将仅通过ajax刷新内容部分data-role=page
以及数据转换效果。因此,要么将所有js脚本添加到文件中并将其添加到head标记中,要么使用以下选项通过ajax停止加载其他页面:
<a href="#" data-ajax=”false”>Without Ajax</a>
但是如果您使用ajax禁用内容加载,那么链接将在普通网页中正常工作,并且转换效果也不会存在。
修改强>
一种替代方式可能是:您可以将一些随机值附加到JS文件的路径中。
<script src="../../js/addProdLine.js?Q=<?php echo time(); ?>"></script>