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

Ale*_*lex 3 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);
});
Run Code Online (Sandbox Code Playgroud)

小智 6

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

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

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