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

时间:2013-11-17 18:07:53

标签: javascript jquery google-chrome history.js

我使用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);
});

1 个答案:

答案 0 :(得分:5)

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

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

我没有对此进行进一步测试,因此我不知道这是否是iframe独有的,或者是否可能是由于更改任何元素src属性引起的。