Popstate事件处理程序似乎不起作用

popstate event handler seems not to work

本文关键字:不起作用 程序 事件处理 Popstate      更新时间:2023-09-26

我有一个'popstate'事件处理程序的问题,这是我的代码:

window.addEventListener("popstate", function (event){
    if (event.state) {
        alert('abc')
    }
});
// The data object is arbitrary and is passed with the popstate event.
var dataObject = {
    createdAt: '2011-10-10',
    author: 'donnamoss'
};
var url = '/posts/new-url';
history.pushState(dataObject, document.title, url);

我期望这段代码在执行时会弹出一个警告框,但是什么都没有发生。

这里有什么问题吗?

谢谢。

pushState不触发popstate事件,只有点击后退/前进按钮(或使用退格键)或调用history.back()/history.go(n)才能触发此事件。

同样,在webkit浏览器中,popstate事件将在页面的onload事件之后触发,但Firefox和IE没有这种行为。

不会的,

根据MDN文档

注意,仅仅调用history.pushState()或history.replaceState()不会触发popstate事件。popstate事件只能通过浏览器操作触发,比如点击后退按钮(或者在JavaScript中调用history.back())。

再次根据这个问题,当您调用pushState()时,popstate事件不会在Chrome中触发

根据定义,history.pushState()将不会触发popstate事件。

在导航到会话历史条目时,在某些情况下触发popstate事件。

此事件仅在导航到历史条目时触发,通过按后退/前进按钮或history.go/back