【发布时间】:2011-06-01 23:44:42
【问题描述】:
既然 HTML5 引入了 history.pushState 来更改浏览器历史记录,网站开始将其与 Ajax 结合使用,而不是更改 URL 的片段标识符。
遗憾的是,这意味着onhashchange 无法再检测到这些呼叫。
我的问题是:是否有可靠的方法(黑客?;))来检测网站何时使用history.pushState?该规范没有说明引发的任何事件(至少我找不到任何东西)。
我尝试创建一个外观并用我自己的 JavaScript 对象替换 window.history,但它根本没有任何效果。
进一步说明:我正在开发一个 Firefox 插件,它需要检测这些变化并采取相应措施。
我知道几天前有一个类似的问题,询问听一些DOM events 是否有效,但我宁愿不依赖它,因为这些事件可能因很多不同的原因而产生。
更新:
Here is a jsfiddle(使用 Firefox 4 或 Chrome 8)显示在调用 pushState 时不会触发 onpopstate(或者我做错了什么?随时改进它!)。
更新 2:
另一个(侧面)问题是使用pushState 时window.location 没有更新(但我认为我已经在此处阅读过这个)。
【问题讨论】:
标签: javascript firefox-addon browser-history pushstate