Per*_*ost 10 javascript html5-history
在不更改URL的情况下推送到历史记录和设置数据:
window.history.pushState({
stateName: "myStateName",
randomData: window.Math.random()
}, "myStateName", location.href);
Run Code Online (Sandbox Code Playgroud)
....然后通过按浏览器中的Back按钮来听pop事件并触发它:
window.onpopstate = function(event) {
console.log(event.state); //logs null
}
Run Code Online (Sandbox Code Playgroud)
您将在大多数情况下将null作为状态值而不是:
{
stateName: "myStateName",
randomData: 0.34234234234
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题,为什么会这样呢?
这是一个奇怪的问题,根据我的说法,它没有足够的记录.我在寻找这个问题的解决方案时遇到了麻烦.经过一个小时的沮丧谷歌搜索和尝试/提出不同的解决方案后,我注意到它开始工作时,我推动状态两次(或更多).很明显,event.state指的是推送的第二个最后状态.
所以做这项工作的答案是推两次,听一次.
window.history.push(..);
window.history.push(..);
Run Code Online (Sandbox Code Playgroud)
我希望这可以帮助别人!