【问题标题】:Jquery Address plugin: how to avoid history change?Jquery地址插件:如何避免历史更改?
【发布时间】:2012-04-07 07:48:53
【问题描述】:

小问题:

我试图在给定页面(使用标签)中使后退按钮不会更改页面 URL(历史记录)。是的,当用户按下 后退按钮 时,我需要标签更改,但显示的 URL 不会更改。如何使用地址插件做到这一点?

长问题:

除了上面的解释,我不得不说我是这样使用地址插件的:

$.address.strict(false);
$.address.externalChange(function(e) {
    changePageFunction(e.value);
});

在这个changePageFunction()里面我设置了$.address.title(the_title);$.address.value(the_value);。我尝试的是通过以下方式更改对 changePageFunction() 的直接调用:

$.address.externalChange(function(e) {
    if (!isTabsPage) {
        changePageFunction(e.value);
    } else {
        changeTab();
    }
});

这可行,但显示的 URL 会发生变化(每按下一个后退按钮就会返回一个位置)。

我不能:

  • 为每个选项卡添加不同的 URL(如在 $.address 示例中)
  • 其他类似的更改地址插件
  • 改变当前的分页系统(有点复杂)

想法是,如果 isTabsPage 为真,则 changeTab() 函数将起作用,如果不是,则当前方法将起作用($.address history managed)

有没有办法冻结历史?

【问题讨论】:

    标签: jquery jquery-plugins jquery-address


    【解决方案1】:

    HTML5 有一个原生的历史对象来处理这个问题。您需要在用户更改选项卡时使用其 pushState 函数,并在用户向前/向后导航时处理其 popState 事件。 @balupton here 为旧版浏览器提供了一个很棒的 polyfill。

    【讨论】:

      【解决方案2】:

      您无法控制浏览器的后退按钮。如果您首先设置哈希,浏览器将始终能够使用后退按钮更改哈希。您唯一的选择是获取哈希并手动更改它,这将通过循环等来破坏您的后退按钮功能。

      这与 jQuery 无关。 jQuery 所做的只是操纵 location.hash 属性。

      http://www.ezineasp.net/post/Javascript-Location-Hash-with-Example.aspx

      您为什么要这样做?您的应用程序状态应反映在哈希中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-11-27
        • 2011-05-03
        • 2011-07-09
        • 2023-02-09
        • 2023-03-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多