jquery,jquery移动浏览器后退按钮问题

时间:2011-10-31 05:03:17

标签: jquery iphone browser mobile back

这是我的jquery移动页面的自动页面转换问题。敬请原谅。

我在第A页,点击链接,然后转到“B”页面。现在,我点击页面“B”中的链接转到第C页。

在页面C上,我点击了浏览器后退按钮(左下角的iphone),它将我带到了所需的页面B.现在,我点击相同的链接返回到页面C.这次,浏览器会自动闪烁页面“C”(很快就会自动将jquery移动加载图像放在中间,它会转换幻灯片)它会加载页面“ B“而不是。当我查看顶部的URL时,我仍然是pageC.html url而不是B.只有内容属于Page B.

我有道理吗?怎么了?请帮帮我。

更多信息:我在用什么?

非常感谢

5 个答案:

答案 0 :(得分:5)

我遇到了同样的问题,并且能够通过将hashListeningEnabled设置为false来解决它。

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

答案 1 :(得分:1)

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

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

在标签中实现此代码对我有用。确保你把这个放在你的jquery参考之后,但是在你的jquery MOBILE参考之前。这是一个非常令人沮丧的Gotcha。我的标签看起来像这样:

    <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>

答案 2 :(得分:0)

巴迪,

我猜问题与您的文件结构有关。 您正在使用jquery移动库,但同时您正在使用两个页面来进行无效的转换。

答案 3 :(得分: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"是某些情况。

答案 4 :(得分:0)

如果您没有使用AJAX导航(即您将$.mobile.ajaxEnabled选项设置为false),JQuery Mobile建议也禁用$.mobile.pushStateEnabled来修复这些浏览器问题:

  

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

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

要禁用它:

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