【问题标题】:JQM - data-dom-cache="true" on page not loading js filesJQM - 页面上的 data-dom-cache="true" 未加载 js 文件
【发布时间】:2014-10-01 19:25:58
【问题描述】:

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

【问题讨论】:

    标签: android jquery jquery-mobile dom cordova


    【解决方案1】:

    Jquery mobile 仅在加载整个文档时加载一次标记。加载文档后,如果您单击其他链接,则只有内容部分data-role=page将通过ajax刷新以及数据转换效果。因此,要么将所有 js 脚本添加到文件中并将其添加到 head 标签中,要么使用以下选项停止通过 ajax 加载其他页面:

    <a href="#" data-ajax=”false”>Without Ajax</a>
    

    但是如果您将使用 ajax 禁用内容加载,则链接将像在正常网页中一样工作,并且过渡效果将不存在。

    编辑:

    另一种方法可能是:您可以将一些随机值附加到 JS 文件的路径中。

    <script src="../../js/addProdLine.js?Q=<?php echo time(); ?>"></script>
    

    【讨论】:

    • 好的,在答案中尝试其他方式。如果您不使用 php,那么您可以使用任何方法在您的脚本语言中生成随机数。
    猜你喜欢
    • 2013-03-24
    • 1970-01-01
    • 2012-11-28
    • 2012-07-18
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多