JQM - data-dom-cache =“true”页面上没有加载js文件

时间:2014-08-08 10:29:12

标签: android jquery jquery-mobile dom cordova

我从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文件应该运行。

1 个答案:

答案 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>