jQuery,jQuery Mobile浏览器后退按钮问题

3
这是我在jquery mobile页面上遇到的自动页面转换问题。需要任何帮助,感激不尽。
我在A页面,点击链接后进入了"B"页面。现在我在B页面点击链接进入了C页面。 在C页面,我点击浏览器的返回按钮(iphone在左下角),它像预期的那样将我带回了B页面。现在,我再次点击同样的链接返回C页面。 这时,浏览器会短暂地闪现C页面,但很快(带有jquery移动加载图像的中间)自动执行过渡滑动,加载B页面而非C页面。当我查看顶部的URL时,我仍然处于pageC.html网址而非B页面,只有内容是B页面。
我讲得清楚吗?到底发生了什么?请帮帮我。
更多信息:我在使用什么?
非常感谢。

请您能否发布您的代码片段,这样我可以更好地查看。 - pinaldesai
抱歉伙计,我无法准确地找到您代码的问题。请查看在线文档,也许可以帮助您。http://www.elated.com/articles/jquery-mobile-what-can-it-do-for-you/ - pinaldesai
你可以编辑你的问题并将代码放入代码块。 - pinaldesai
5个回答

5

我遇到了相同的问题,通过将hashListeningEnabled设置为false解决了这个问题。

$.extend(  $.mobile , {
    ajaxEnabled      : false,
    hashListeningEnabled: false
});

1

$.extend($.mobile, { ajaxEnabled: false, hashListeningEnabled: false });

这对我也起作用。在 iPhone 5s 上,我会浏览到一个页面(使用 .pagecontainer("change") 方法)。该页面是在客户端代码中动态生成的,因此它不是实际的 URL。无论如何,第一次使用后退按钮时,它都会起作用。第二次导航到另一个页面后,转换会发生,然后页面会快速闪烁/重新加载。之后,后退按钮停止工作。

<head> 标签中实现此代码对我有用。确保在 jquery 引用之后但在 jquery MOBILE 引用之前放置此代码。这是一个非常令人沮丧的陷阱。我的 <head> 标签看起来像这样:

    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css">
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script type="text/javascript">
    $(document).bind("mobileinit", function () {
        $.mobile.ajaxEnabled = false;
        $.mobile.pushStateEnabled = false;
    });
</script>
<script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
<script src="phonebook.js"></script>

0
如果你没有使用AJAX导航(例如,你将选项$.mobile.ajaxEnabled设置为false),JQuery Mobile建议你也禁用$.mobile.pushStateEnabled来解决浏览器问题:

注意:当构建jQuery Mobile应用程序时,全局禁用Ajax导航系统或在单个链接上经常禁用它时,我们建议禁用$.mobile.pushStateEnabled全局配置选项,以避免某些浏览器中的不一致的导航行为。

http://demos.jquerymobile.com/1.4.2/navigation-linking-pages/

禁用它:

$(document).bind("mobileinit", function () {
  $.mobile.ajaxEnabled = false;
  $.mobile.pushStateEnabled = false;
});

0

我曾经遇到过类似的问题。有时将 data-ajax="false" 添加到链接中可以解决问题。

例如,更改为

`<a href="#" data-role="button" id="fix_link">Another Page</a>`

`<a data-ajax="false" href="#" data-role="button" id="fix_link">Another Page</a>`

有很多地方可以了解JQuery Mobile如何加载页面并与导航一起工作,但我通过尝试和调试来学习最多,有时候在某些情况下需要使用data-rel="external"


0
伙计,
我猜问题出在你的文件结构上。 你正在使用jquery移动库,但同时又在处理两个页面以进行转换,这是行不通的。

请查看您的电子邮件,我已经向您发送了演示包以供参考。谢谢。 - pinaldesai
处理多个页面是不可避免的。单页解决方案只能在您不涉及太多后端内容时起作用。此外,将所有内容都塞进一个页面也会增加移动页面的大小。似乎这个浏览器返回按钮问题总是存在。正如我在jquerymobile.com页面上看到的同类问题一样。这里有另一个链接,概述了jquerymobile.com页面上的问题。听起来非常相似。http://forum.jquery.com/topic/jquery-mobile-true-browser-back-button-issue - Sunny man

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接