26

我正在为 History API 编写一个小演示。我正在为此苦苦挣扎:

$(window).bind('popstate',  
    function(event) {
        console.log('pop: ' + event.state);
    });

当我单击“上一个”按钮时,它会记录“弹出:未定义”...

但如果我这样做,事情就会像预期的那样工作:

window.onpopstate = function(event) {
    console.log('pop: ' + event.state);
};

这次它记录'pop:[object Object]'......

所以就像 jQuery 没有将事件对象传递给回调一样。
jQuery 有问题吗?还是我搞砸了什么?

4

1 回答 1

38

在第一个实例中,您将获得一个规范化的 jQuery 事件对象。在第二种情况下,您将获得浏览器的事件对象。我假设 jQuery 还没有完成对所有新的 HTML5 事件和相关属性的规范化。在此之前,您需要访问原始事件对象。您可以通过 originalEvent 属性通过 jQuery 事件对象执行此操作。您可以在此处找到一些其他详细信息和示例:stackoverflow.com/questions/7860960/popstate-returns-event-state-is-undefined

event.originalEvent.state
于 2012-04-24T15:31:40.893 回答