我从JQM页面得到一个奇怪的行为。
我正在使用phonegap-android 4.4.2与eclipse IDE。
页面代码:
<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文件都能运行
Jquery mobile只在加载整个文档时加载一次标签。文档加载后,如果您将点击其他链接,那么只有内容部分data-role=page
将通过ajax随着数据转换效果刷新。因此,要么将所有js脚本添加到一个文件中,并将其添加到头部标签中,要么使用以下选项停止通过ajax加载其他页面:
<a href="#" data-ajax=”false”>Without Ajax</a>
但是如果你将禁用内容加载使用ajax然后链接将工作,因为它在正常的网页工作,也过渡效果将不存在。
编辑:另一种方法是:你可以在JS文件的路径中附加一些随机值。
<script src="../../js/addProdLine.js?Q=<?php echo time(); ?>"></script>