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



我在jQuery mobile加载到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"的链路上。

此外,这在桌面浏览器上并没有发生,只有安卓浏览器(它似乎也发生在iPhone上,尽管我只是通过模拟器进行了测试)。

看起来这是由pushState引起的。

来自官方文件:

重要信息:rel="external"和$.mobile.ajaxEnabled=false

不同版本的replaceState API实现略有不同浏览器在特定情况下可能会导致奇怪的行为。例如一些浏览器实现(包括桌面浏览器)实现当从外部链接和向后移动时,popstate事件不同到状态已被推送/替换的页面。什么时候在ajax导航所在的位置构建jQueryMobile应用程序通过频繁使用链接上的rel="external"或通过对于$.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>

现在它工作了!

最新更新