Jquery地址插件:如何避免历史更改?
Posted
技术标签:
【中文标题】Jquery地址插件:如何避免历史更改?【英文标题】:Jquery Address plugin: how to avoid history change? 【发布时间】: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)
有没有办法冻结历史?
【问题讨论】:
【参考方案1】:html5 有一个原生的历史对象来处理这个问题。您需要在用户更改选项卡时使用其 pushState 函数,并在用户向前/向后导航时处理其 popState 事件。 @balupton here 为旧版浏览器提供了一个很棒的 polyfill。
【讨论】:
【参考方案2】:您无法控制浏览器的后退按钮。如果您首先设置哈希,浏览器将始终能够使用后退按钮更改哈希。您唯一的选择是获取哈希并手动更改它,这将通过循环等来破坏您的后退按钮功能。
这与 jQuery 无关。 jQuery 所做的只是操纵 location.hash 属性。
http://www.ezineasp.net/post/javascript-Location-Hash-with-Example.aspx
您为什么要这样做?您的应用程序状态应反映在哈希中。
【讨论】:
以上是关于Jquery地址插件:如何避免历史更改?的主要内容,如果未能解决你的问题,请参考以下文章