常用ajax的同学应该对onhashchange并不陌生,ajax并不是一个完美的东西,无刷新的页面会导致我们丢失本该有的浏览器历史记录,通常我们需要通过url hash来手动的产生浏览器历史记录,从而使“后退”/“前进”按钮有效。所以,还没有关注这点的同学也需要注意onhashchange了,有“后退”/“前进”功能的页面才是一个好页面。
遗憾的是onhashchange事件是html5里新增加的,所以一些古老的浏览器并不支持它,目前的支持情况如下(via):
- IE 的部份,IE8 之后才有支持:「onhashchange Event」
- Firefox 則是 3.6 之后才有支持:「window.onhashchange」
- Webkit 是 528 版以后 (2009/08/07 的 ticket):「Support for HTML5 “hashchange” event」,对应的版本是 Google Chrome 1.0.154 之后,以及 Safari 4.0+。
对于不支持的浏览器,可以使用隐藏的iframe来达到更改浏览器历史记录的目的。
近来没时间打字,有需要的同学就参考下面的相关资料吧。
参考资料:
- jQuery onhashchange
- window.onhashchange
- AJAX – Introducing AJAX Navigations
- window 的 hashchange (onhashchange) 事件
- Emulating onhashchange without setInterval
- 不采用interval方式模仿onHashChange
- 关于onhashchange事件
- 不使用定时器实现的onhashchange
-EOF-