即使ajaxEnabled设置为false,jQuery移动加载时也不应该加载

时间:2012-03-04 23:22:32

标签: jquery jquery-mobile

我见过this related question jQuery mobile加载到DOM中。但是,在这种情况下,启用了ajax加载,并且他正在使用window.location移动页面。

我没有使用window.location,只是正常的超链接,我已经关闭了ajax loading:

$(document).ready(function() {
    // disable page transitions
    $.mobile.ajaxEnabled = false;
    $.mobile.defaultPageTransition = 'none';
    }

尽管如此,如果我:

  1. 从第A页开始
  2. 点击指向第B页的链接
  3. 点击Android手机上的后退按钮
  4. 点击指向第C页的链接
  5. 发生以下情况:

    1. 页面C完整加载,包括所有JavaScript和媒体
    2. 出现[loading ...]图形
    3. 页面A的内容加载到页面
    4. 这不可靠;有时内容来自更早的页面。

      请注意,在步骤3中,单击jQuery mobile生成的后退按钮会导致相同的行为。

      请注意,对于明确标记为data-ajax="false"的链接,也会发生这种情况。

      此外,桌面浏览器上只会出现,只有Android(它似乎也会出现在iPhone中,虽然我只是通过模拟器进行了测试)。

1 个答案:

答案 0 :(得分:2)

看起来这是由pushState引起的。

来自official documentation

  

重要:rel ="外部"和$ .mobile.ajaxEnabled = false

     

各种各样的replaceState API的实现略有不同   浏览器可能会导致特定情况下的奇怪行为例如,   一些浏览器实现(包括桌面浏览器)实现   当外部链接和后退时, popstate 事件会有所不同   到已经推送/替换状态的页面。什么时候   构建ajax导航所在的jQuery Mobile应用程序   被明确禁用,要么经常使用   链接上的rel="external"或完全禁用Ajax导航   $.mobile.ajaxEnabled=false,我们建议禁用pushState   功能可以回退到基于哈希的导航,以获得更一致的功能   行为。

只需添加代码即可在标头中禁用pushState:

<script src="//code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.js"></script>
<script type="text/javascript">
    $.mobile.pushStateEnabled = false;
</script>

现在有效!