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