3 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超3個贊
真正做到這一點(diǎn)的唯一方法(也就是‘ReallysimpleHistory’如何做到這一點(diǎn)),是通過設(shè)置一個時間間隔來檢查當(dāng)前的散列,并將其與以前的哈希進(jìn)行比較,我們這樣做并讓訂閱者訂閱我們在哈希更改時觸發(fā)的更改事件。它并不完美,但瀏覽器實(shí)際上并不支持這個事件。
更新以保持此答案新鮮:
如果您正在使用jQuery(對于大多數(shù)人來說,jQuery現(xiàn)在應(yīng)該是基礎(chǔ)的),那么一個很好的解決方案就是使用jQuery提供的抽象,使用它的事件系統(tǒng)來偵聽窗口對象上的散列事件。
$(window).on('hashchange',?function()?{ ??//..?work?..});
這里的好處是,您可以編寫甚至不需要擔(dān)心hashchange支持的代碼,但是您確實(shí)需要做一些神奇的工作,其形式是不太為人所知的jQuery特性。
通過這個特性,您基本上可以為任何事件運(yùn)行一些設(shè)置代碼,這是第一次有人試圖以任何方式使用事件(例如綁定到事件)。
在此設(shè)置代碼中,您可以檢查本地瀏覽器的支持,如果瀏覽器沒有本機(jī)實(shí)現(xiàn)這一點(diǎn),則可以設(shè)置一個計(jì)時器來輪詢更改,并觸發(fā)jQuery事件。
這完全解除了您的代碼對此支持問題的理解,這類特殊事件的實(shí)現(xiàn)非常簡單(獲得一個簡單的98%的工作版本),但為什么要這樣做呢?

TA貢獻(xiàn)1909條經(jīng)驗(yàn) 獲得超7個贊
HTML 5指定hashchange
事件..這個事件現(xiàn)在所有現(xiàn)代瀏覽器都支持..在下列瀏覽器版本中添加了支持:
- Internet Explorer 8
- Firefox 3.6
- 鉻5
- 狩獵5
- 歌劇10.6
添加回答
舉報