我正在运行一个简单的:
window.location.hash = "hash";
在页面加载后立即在网址中添加哈希值。我的,mySite.com/aPage#hash。当我点击后退按钮时,我希望网址更改回mySite.com/aPage,而不会有任何实际加载/返回。相反,我将被带回mySite.com/aPage之前的历史记录条目。
当我调用window.location.hash时效果很好在用户触发的单击事件回调中。
我创建了一个测试:http://jsbin.com/idukiz/1/ 请参阅代码:http://jsbin.com/idukiz/1/edit
只有在setTimeout函数中添加的最后一个哈希行为与我期望的一样。有没有setTimeout如何让它工作的任何想法?
答案 0 :(得分:1)
如何在没有setTimeout的情况下使其工作的任何想法?
动态创建的<a>
{em} href #yourHash
dispatchEvent
鼠标点击。
window.onload = function () {
location.hash = 'foo'; // no history item created, just to help visibility
var a = document.createElement('a'),
ev = document.createEvent("MouseEvents");
a.href = '#bar'; // this will create history item
ev.initMouseEvent("click", true, false, self, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
a.dispatchEvent(ev); // dispatch click
};
代码演示here。在Google Chrome 25中测试。