【问题标题】:jQuery mobile loading when it shouldn't, even with ajaxEnabled set to false不应该加载 jQuery 移动设备,即使将 ajaxEnabled 设置为 false
【发布时间】:2012-03-04 23:22:32
【问题描述】:

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

我没有使用window.location,只是普通的超链接,我已经关闭了ajax加载:

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

不过,如果我:

  1. 从 A 页开始
  2. 点击页面 B 的链接
  3. 点击我的 Android 手机上的返回按钮
  4. 点击C页面的链接

会发生以下情况:

  1. 页面 C 完整加载,包括所有 JavaScript 和媒体
  2. [正在加载...]图形出现
  3. 页面A的内容加载到页面中

这不可靠;有时内容来自更早的页面。

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

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

此外,这不会发生在桌面浏览器上,只发生在 Android 上(它似乎也发生在 iPhone 上,尽管我只通过模拟器对其进行了测试)。

【问题讨论】:

    标签: jquery jquery-mobile


    【解决方案1】:

    看起来这是由 pushState 引起的。

    来自official documentation

    重要提示:rel="external" 和 $.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>
    

    现在可以了!

    【讨论】:

      猜你喜欢
      • 2011-04-13
      • 1970-01-01
      • 2012-05-07
      • 2022-12-22
      • 2017-08-14
      • 2020-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多