Javascript pushState被调用两次,并重写以前的历史记录条目

Javascript pushState被调用两次,并重写以前的历史记录条目,javascript,jquery,html,pushstate,Javascript,Jquery,Html,Pushstate,我有一个点击事件,每次点击一个视频,一个新的条目就会被推到历史记录中。问题在于,url会发生更改,但历史记录中也会输入一个重复的条目,并且会重写以前的条目 $(document).on('click', '.update', function(event) { //pushState window.history.pushState(data, data.title, data.video_name); }); 当页面加载时,它工作正常,但当我单击一个新视频时,问题就出现了。因

我有一个点击事件,每次点击一个视频,一个新的条目就会被推到历史记录中。问题在于,url会发生更改,但历史记录中也会输入一个重复的条目,并且会重写以前的条目

$(document).on('click', '.update', function(event) {
    //pushState
    window.history.pushState(data, data.title, data.video_name);
});
当页面加载时,它工作正常,但当我单击一个新视频时,问题就出现了。因此url会发生变化,并且在历史记录中会被推到另一个状态。为什么会这样

在页面加载时。很好。

单击新视频后<代码>url更改,并在历史记录中插入相同的条目。


如果您想查看它,请转到并单击下面的一个视频。

这是一种将状态推到历史记录中的方法:在浏览器历史记录中添加一个页面,您看到的url是最新状态的url。例如,当用户单击“上一步”时,您可以使用window.onpopstate为不同的历史状态提供服务。是的,我理解
onpopstate
部分,但您是说这是它应该工作的方式?这很奇怪,因为当你浏览其他网站时,它不会发生。它应该更改url,但为什么它会在历史记录中添加一个新条目,而这是活动页面?单击视频后,在chrome中使用“后退”按钮可以很好地工作。真的不清楚你的问题是什么…或者如果有问题就拿这个网站为例:当点击伦敦或纽约时,它会推送历史,所以当点击后退或前进时,它会改变页面的内容。据我所知,这是弹出/推送历史状态的方式。