Javascript window.location.hash不创建浏览器历史记录条目
我正在运行一个简单的:Javascript window.location.hash不创建浏览器历史记录条目,javascript,url,hash,browser-history,Javascript,Url,Hash,Browser History,我正在运行一个简单的: window.location.hash = "hash"; 在页面加载后立即在url中添加哈希。我知道,mySite.com/aPage#hash。当我点击后退按钮时,我希望url会变回mySite.com/aPage,而不会实际加载/返回。相反,我被带回到mySite.com/aPage之前的历史条目 当我调用window.location.hash(例如在用户触发的点击事件回调中)时,它工作得很好 我创建了一个测试: 见代码: 只有在setTimeout函数中添加
window.location.hash = "hash";
在页面加载后立即在url中添加哈希。我知道,mySite.com/aPage#hash。当我点击后退按钮时,我希望url会变回mySite.com/aPage,而不会实际加载/返回。相反,我被带回到mySite.com/aPage之前的历史条目
当我调用window.location.hash(例如在用户触发的点击事件回调中)时,它工作得很好
我创建了一个测试:
见代码:
只有在setTimeout函数中添加的最后一个散列的行为与我预期的一样。有没有办法让它在没有设置超时的情况下工作
有没有办法让它在没有设置超时的情况下工作
通过鼠标点击动态创建的
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
};
代码的演示。在谷歌Chrome 25上测试。谷歌Chrome不需要这个,是吗?Chrome为每个位置创建历史记录“条目”。散列更改。。。或者如果它在onload
?这个问题是关于页面加载时间上/之后的问题,对于页面加载时间,location.hash
通常不会更新历史记录。实际上,它不会运行/创建历史记录条目,即使在chrome中的内部文档准备就绪或窗口onload时也是如此。我只需要在IE中使用它,在IE中它可以在DocumentReady中工作。