编程语言
首页 > 编程语言> > javascript – 使用Chrome / Safari中的History.pushState复制历史记录

javascript – 使用Chrome / Safari中的History.pushState复制历史记录

作者:互联网

我使用https://github.com/browserstate/history.js/的History.js在Chrome和Safari中遇到了一个奇怪的问题

如果我点击几个不同的“.node”项目,然后查看我的浏览器历史记录,我每次点击都有重复的条目,需要两次后退按钮才能返回上一个“真实”状态.我添加了一个console.log(id),可以确认该事件只触发一次.

在Firefox中它按预期工作.我只在Chrome和Safari中看到重复的历史记录项.

$( "body" ).delegate( ".node" , "click", function(){
    id = $(this).data('id');
    History.pushState({"Foo":"Bar","ID":id}, "Title for "+ id, "/item-"+id);
});

解决方法:

我在Chrome中遇到了类似的问题(在IE和Firefox中没有发生),结果发现额外的历史条目没有被pushState添加,但是当我通过javascript更改了iframe上的src属性时发生了.

即使他们是从远程站点加载(在这种情况下是Vimeo),他们在后退/前进按钮的历史记录中显示为当前页面的重复,我不得不多次点击返回.

我没有进一步测试这个,所以我不知道这是iframes的独特之处,还是因为它可能是由改变任何元素src属性引起的.

标签:history-js,javascript,jquery,google-chrome
来源: https://codeday.me/bug/20190831/1774909.html