
74
|
第四章
偵測雜湊值的變動
過去,如果想要偵測網址的雜湊值是否有變動,只能用輪詢計時器(polling timer)這
種頗拙劣的手法。不過現在的技術已不可同日而語,目前主流的瀏覽器都會支援一組由
window
觸發的
hashchange
事件。如果想要在網址雜湊值被修改的第一時間就接獲通知,
可以監聽這組事件:
window.addEventListener("hashchange", function(){ /* ... */ }, false);
jQuery 的寫法為:
$(window).bind("hashchange", function(event){
// hash 已經改變,請修改狀態
});
透過
hashchange
事件的觸發,就能確認程式目前的狀態是否正確。這組事件的瀏覽器支
援度非常高,目前所有主流瀏覽器的最新版本都有支援:
• IE >= 8
• Firefox >= 3.6
• Chrome
• Safari >= 5
• Opera >= 10.6
雖然較舊的瀏覽器不支援此事件,不過有一套很不錯的 jQuery 外掛模組(
http://
benalman.com/projects/jquery-hashchange-plugin/
),會幫你在較舊的瀏覽器上新增
hashchange
事件。
需特別注意的一點是,這組事件只會在雜湊值有變動時才會觸發,一開始載入網頁時不
會觸發此事件。如果你想依據網址雜湊值來設定應用程式的初始狀態,就得在載入網頁
時,自己呼叫
trigger() ...