jQuery绑定popstate事件未传递

27

我正在编写一个历史API的小型演示,但我遇到了困难:

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

当我点击“Previous”按钮时,它会记录“pop: undefined”...

但如果我改成这样做,一切都像预期的那样工作:

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

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

所以,似乎jQuery没有将事件对象传递给回调函数。
是jQuery有问题吗?还是我搞错了什么?


哪个浏览器?你看过https://dev59.com/F2445IYBdhLWcg3w0NWu了吗? - Matt Ball
谢谢您的评论,它帮助我更好地理解了问题,所以我稍微修改了我的问题。这与您指出的问题不同,因为它不是在第一次加载时出现的问题。 - Jocelyn LECOMTE
1个回答

40

第一种情况下,你获取的是一个经过规范化的jQuery事件对象。而在第二种情况下,你获取的是浏览器的事件对象。我认为jQuery还没有完成所有新的HTML5事件和相关属性的规范化。在那之前,你需要通过jQuery事件对象的originalEvent属性来访问原始事件对象。你可以在这里找到一些额外的细节和示例:stackoverflow.com/questions/7860960/popstate-returns-event-state-is-undefined

event.originalEvent.state

很棒的发现!在我提问之前搜索时我没看到这个问题 :( - Jocelyn LECOMTE
谢谢!我很想为这个发现获得全部功劳,但实际上是stackoverflow帮了我一个忙。我碰巧在右边的相关列表中注意到了它。祝你在开发工作中一切顺利! - KSev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接