Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript window.location.hash不创建浏览器历史记录条目_Javascript_Url_Hash_Browser History - Fatal编程技术网

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中工作。