简短问题:
我正在尝试在给定页面中使用(使用制表符)后退按钮不会更改页面URL(历史记录)。我需要在用户按后退按钮时更改选项卡,但不显示所显示的URL。我怎么能用Address插件做到这一点?
长问题:
除了上面解释的,我不得不说我正在使用这样的地址插件:
$.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已更改(按下每个后退按钮返回一个位置)。
我不能:
这个想法是,如果 isTabsPage 为真,那么 changeTab()函数将起作用,否则,当前方法将起作用($ .address history managed)< / p>
有没有办法冻结历史?
答案 0 :(得分:0)
您无法控制浏览器后退按钮。如果您首先设置哈希值,浏览器将始终能够使用后退按钮更改哈希值。你唯一的选择是抓取哈希并手动更改它,这将通过制作循环等来打破你的后退按钮功能。
这与jQuery没有任何关系。所有jQuery都会操纵location.hash属性。
http://www.ezineasp.net/post/Javascript-Location-Hash-with-Example.aspx
你为什么要这样做?您的应用程序状态应该反映在哈希值中。
答案 1 :(得分:0)
HTML5有一个本机历史对象来处理这个问题。当用户向前/向后导航时,您需要使用其pushState函数,因为用户更改选项卡并处理其popState事件。 @balupton here为旧版浏览器提供了一个精彩的polyfill。