Событие jQuery bind popstate не передается
Я кодирую небольшую демоверсию для API истории. И я борюсь с этим:
$(window).bind('popstate',
function(event) {
console.log('pop: ' + event.state);
});
Он записывает "pop: undefined", когда я нажимаю кнопку "Предыдущая"...
Но если я это сделаю, все будет работать так, как ожидалось:
window.onpopstate = function(event) {
console.log('pop: ' + event.state);
};
На этот раз он записывает "pop: [object Object]"...
Так как jQuery не передает объект события обратному вызову.
Есть ли проблема с jQuery? Или я что-то испортил?
Ответы
Ответ 1
В первом случае вы получаете нормализованный объект события jQuery. Во втором случае вы получаете объект события браузера. Я предполагаю, что jQuery не завершил нормализацию всех новых событий HTML5 и связанных с ними атрибутов. До тех пор вам понадобится доступ к исходному объекту события. Вы можете сделать это через объект события jQuery через свойство originalEvent. Вы можете найти дополнительные сведения и примеры здесь: fooobar.com/info/208120/...
event.originalEvent.state