關於hashchangebroker和statehashable的補充文檔

來源:互聯網
上載者:User

url hash:url中#號後面那段,通常用來定位到html頁面中某一錨點。因為hash變化頁面不會重新整理,所以在ajax應用中用hash來儲存指令碼運行狀態,例如gmail的做法。

jquery hash change event plugin: Internet Explorer 8, Firefox 3.6+, 和Chrome 5+裡,已經提供了window.onhashchange事件,但是在老版本的瀏覽器中並沒有這個事件,這個外掛程式通過定時器判斷hash是否產生了變化,以便在老版本的瀏覽器重提供hashchange事件。

hashchangebroker:之前寫了這個jquery extend,提供了四個方法:

$.hashchangebroker.subscrib(fragName, handler)

  訂閱fragName對應的hash段落變化,並轉寄給指定的handler。
  url hash由若干個frag組成,一個frag格式為:[fragName]:[state]。fragName為自訂hash狀態名稱。state為base64編碼的json字串。
  handler只有一個參數state:json格式字串,描述自訂狀態。

$.hashchangebroker.publish(hash)

  此方法應綁定到window.onhashchange事件。接收hash並解碼找到變更的frag,並轉寄給訂閱該frag的handler。

$.hashchangebroker.changeFrag(fragName,state)

  此方法由statehashable類型調用,用於修改hash中對應fragName的frag的state。

$.hashchangebroker.init()

  此方法用於在頁面重新整理後,擷取hash並publish。在$(document).ready中調用即可。應放到所有subscrib方法之後。

statehashable:提供這個widget是希望可以比較方便的將控制項的狀態發布到url hash,並擷取控制項對應的hash frag的state變化,觸發相應的statechange事件。

用法$(dom).statehashable();調用此方法後,給dom對象增加了hashchange事件。當statehashable對象發現控制項對應的hash frag變化後,會觸發dom對象的hashchange事件。
使用方法:
複製代碼 代碼如下:
$(dom).bind("hashchange",function(e,stateObj){
//判斷stateObj的狀態,還原dom到對應的狀態
});

應在更改dom狀態的方法中增加statechange的事件觸發,statehashable對象會捕捉該事件,並調用hashchangebroker的changeFrag方法,修改hash。statechange觸發樣本:
$(dom).trigger("statechange",[stateName,stateValue]);

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.