我为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有问题吗?还是我乱了东西?
解决方法
首先,你得到一个标准化的jQuery事件对象。在第二个例子中,你得到浏览器的事件对象。我假设jQuery没有完成所有新的HTML5事件和相关属性的规范化。在此之前,您需要访问原始事件对象。你可以通过jEvent事件对象通过originalEvent属性。您可以在这里找到一些其他详细信息和示例:
stackoverflow.com/questions/7860960/popstate-returns-event-state-is-undefined
event.originalEvent.state