我正在使用哈希以避免重新加载页面(是的,我知道有一个新的历史API,但无论如何......)
但是现在我想要更改散列而不将其添加到会话历史记录中(即不要将其放在后退按钮列表中),或添加它删除前一个。所以我不想要的是在列表中同时包含新的和旧的。
我似乎可以使用location.replace
:
location.replace( location.href.replace(/#.+/, '') + '#' + newHash );
在Firefox 29上运行良好,因为我只更改了哈希,所以页面不会重新加载。
但它在所有浏览器上都是这样的(IE,我正在看着你)?
答案 0 :(得分:0)
在使用test page和browserling进行测试(browserstack)后,似乎
具体来说,我的代码适用于
而且,根据IETester的说法,它也适用于IE 5.5。
修改 - 以下代码也有效(test page),浏览器支持相同:
location.replace('#' + newHash);
答案 1 :(得分:0)
是的,你可以肯定。为什么replace
方法与将window.location
设置为网址的方法相同?
如果我是你,我会使用window.location.hash = "#newhash"
。
LE:或者只是致电history.replaceState()
。它与pushState相同,唯一的区别是此方法不会创建新的历史记录条目。