所以现在HTML5引入history.pushState
来改变浏览器的历史记录,网站开始将其与Ajax结合使用,而不是改变URL的片段标识符。
遗憾的是,这意味着onhashchange
不能再检测到这些调用。
我的问题是:是否有可靠的方法(hack?);))来检测网站何时使用history.pushState
?规范没有说明引发的任何事件(至少我没有找到任何事件)。< br / >
我试图创建一个门面,并用我自己的JavaScript对象替换window.history
,但它根本没有任何效果
我正在开发一个Firefox插件,需要检测这些变化并相应地采取行动。< br / >
我知道几天前有一个类似的问题,问监听一些DOM事件是否有效,但我宁愿不依赖于它,因为这些事件可以出于许多不同的原因而生成
更新:
这是一个jsfiddle(使用Firefox 4或Chrome 8),显示在调用pushState
时onpopstate
没有被触发(或者我做错了什么?请随意改进!)。
更新2:
另一个(侧面)问题是,在使用pushState
时,window.location
不会更新(但我已经在这里读到过这个,所以我认为)。