jQuery绑定popstate事件未通过

Posted

技术标签:

【中文标题】jQuery绑定popstate事件未通过【英文标题】:jQuery bind popstate event not passed 【发布时间】:2012-05-05 05:05:06 【问题描述】:

我正在为 History 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 有问题吗?还是我搞砸了什么?

【问题讨论】:

哪个浏览器?你见过***.com/questions/4688164/window-bind-popstate 了吗? 感谢您的评论,它帮助我更好地理解问题所在,所以我改变了一点我的问题。它与您指出的不一样,因为它在第一次加载时没有问题。 【参考方案1】:

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

event.originalEvent.state

【讨论】:

不错的收获!我在询问之前搜索时没有看到这个问题:( 谢谢!我想完全归功于这次捕获,但 *** 为我做到了。我碰巧在右边距的相关列表中注意到它。在您的开发工作中一切顺利!

以上是关于jQuery绑定popstate事件未通过的主要内容,如果未能解决你的问题,请参考以下文章

防止浏览器在 HTML5 History popstate 上滚动

打开 iframe 时 Jquery 滑动未绑定

jquery mobile+html5 写的页面 如何禁用手机后退按钮。或者说如何禁用页面后退。

jquery中click事件的累加绑定,点击一次,执行多次

利用popstate事件和window下的history对象处理浏览器跳转问题

javascript Jquery微小滑块 - 通过事件绑定