Обработчик события popstate, похоже, не работает

У меня проблема с обработчиком события 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);

Я ожидал, что этот код выведет окно предупреждения при его выполнении, но ничего не произойдет.

Здесь что-то не так?

Спасибо.

Ответ 1

pushState не запускать событие popstate, только нажатие кнопки "назад/вперед" (или использование обратного пространства) или вызов history.back()/history.go(n) вызовет это событие.

Кроме того, в браузерах webkit событие popstate запускается после события onload, но Firefox и IE не имеют такого поведения.

Ответ 2

Нет, не будет,

По Документация MDN

Обратите внимание, что просто вызов history.pushState() или history.replaceState() не вызывает событие popstate. Событие popstate запускается только с помощью действия браузера, такого как щелчок по кнопке "Назад" (или вызов history.back() в JavaScript).

Снова в соответствии с этот вопрос событие popstate не запускается в Chrome при вызове pushState().

Ответ 3

history.pushState() не будет запускать popstate по определению.

Событие popstate запускается в некоторых случаях при навигации к записи истории сеанса.

Это событие предназначено для запуска только при навигации по записи истории, либо нажатием кнопки "Назад/вперед", либо history.go/back.

Ответ 4

Вы также подключите обработчик обратного вызова popstate следующим образом:

window.onpopstate = someCallback;

Подробнее узнать об этом onpopstate WindowEventHandler здесь.