Internet Explorer 10 и popstate не связаны
Мне было интересно, что может заставить window.addEventListner('popstate', foo, false) window.attachEvent('onpopstate', foo)
и window.onpopstate=foo
не запускать функцию foo. У нас есть код, подобный этому, и в производстве он не срабатывает, а развивается. Можно ли отключить событие popstate через JS или вызвать какое-то состояние столкновения или гонки, чтобы это произошло?
EDIT (Gustin): + Пример кода
PopStateEvent.js(полный список, используя jQuery 1.9.1):
$(window).bind('popstate', function () { alert("Pop state event received!"); });
Если я тестирую этот очень простой пример с IE 10 (10.0.9200.16484), я никогда не получаю событие поп-состояния (т.е. окно предупреждения никогда не появляется). Даже если я уйду и вернусь через кнопку "Назад" IE. То есть этот Q/A не решает моего дела.
С Chrome 24 все работает нормально.
Ответы
Ответ 1
Вы уверены, что не вызываете его, используя history.pushState() или history.replaceState()?
popstate запускается только тогда, когда вы делаете что-то с браузером, например, с помощью кнопки "Назад" или вызываете с помощью history.back().
кроме этого, он будет работать с хром, потому что он будет снимать всплывающие окна при загрузке страницы, поэтому убедитесь, что событие действительно загружается. Проверка этого должна быть включена в:
if (document.readyState == "complete") {
initApplication();
}
Я считаю, что popstate включен в document.readyState, поэтому сделайте снимок.