windows .location.hash没有创建浏览器历史记录条目

window.location.hash not creating browser history entry

本文关键字:历史 记录 浏览器 创建 location hash windows      更新时间:2023-09-26

我正在运行一个简单的:

window.location.hash = "hash";

在页面加载后立即在url中添加散列。得到mySite.com/aPage#hash。当我单击后退按钮时,我希望url更改回mySite.com/aPage,而不需要任何实际的加载/返回。相反,我被带回到mySite.com/aPage之前的历史条目。

它工作得很好,当我调用window.location.hash时,例如在由用户触发的点击事件回调中。

我创建了一个测试:http://jsbin.com/idukiz/1/参见代码:http://jsbin.com/idukiz/1/edit

只有在setTimeout函数中添加的最后一个哈希值才会像我期望的那样运行。任何想法如何使它的工作没有setTimeout?

任何想法如何使它的工作没有setTimeout?

一个动态创建的<a>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
};

代码的演示在这里