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