關(guān)于hashchangebroker和statehashable的補(bǔ)充文檔
url hash:url中#號(hào)后面那段,通常用來(lái)定位到html頁(yè)面中某一錨點(diǎn)。因?yàn)閔ash變化頁(yè)面不會(huì)刷新,所以在ajax應(yīng)用中用hash來(lái)存儲(chǔ)腳本運(yùn)行狀態(tài),例如gmail的做法。
jquery hash change event plugin: Internet Explorer 8, Firefox 3.6+, 和Chrome 5+里,已經(jīng)提供了window.onhashchange事件,但是在老版本的瀏覽器中并沒(méi)有這個(gè)事件,這個(gè)插件通過(guò)定時(shí)器判斷hash是否產(chǎn)生了變化,以便在老版本的瀏覽器重提供hashchange事件。
hashchangebroker:之前寫了這個(gè)jquery extend,提供了四個(gè)方法:
$.hashchangebroker.subscrib(fragName, handler)
訂閱fragName對(duì)應(yīng)的hash段落變化,并轉(zhuǎn)發(fā)給指定的handler。
url hash由若干個(gè)frag組成,一個(gè)frag格式為:[fragName]:[state]。fragName為自定義hash狀態(tài)名稱。state為base64編碼的json字符串。
handler只有一個(gè)參數(shù)state:json格式字符串,描述自定義狀態(tài)。
$.hashchangebroker.publish(hash)
此方法應(yīng)綁定到window.onhashchange事件。接收hash并解碼找到變更的frag,并轉(zhuǎn)發(fā)給訂閱該frag的handler。
$.hashchangebroker.changeFrag(fragName,state)
此方法由statehashable類型調(diào)用,用于修改hash中對(duì)應(yīng)fragName的frag的state。
$.hashchangebroker.init()
此方法用于在頁(yè)面刷新后,獲取hash并publish。在$(document).ready中調(diào)用即可。應(yīng)放到所有subscrib方法之后。
statehashable:提供這個(gè)widget是希望可以比較方便的將控件的狀態(tài)發(fā)布到url hash,并獲取控件對(duì)應(yīng)的hash frag的state變化,觸發(fā)相應(yīng)的statechange事件。
用法$(dom).statehashable();調(diào)用此方法后,給dom對(duì)象增加了hashchange事件。當(dāng)statehashable對(duì)象發(fā)現(xiàn)控件對(duì)應(yīng)的hash frag變化后,會(huì)觸發(fā)dom對(duì)象的hashchange事件。
使用方法:
$(dom).bind("hashchange",function(e,stateObj){
//判斷stateObj的狀態(tài),還原dom到對(duì)應(yīng)的狀態(tài)
});
應(yīng)在更改dom狀態(tài)的方法中增加statechange的事件觸發(fā),statehashable對(duì)象會(huì)捕捉該事件,并調(diào)用hashchangebroker的changeFrag方法,修改hash。statechange觸發(fā)示例:
$(dom).trigger("statechange",[stateName,stateValue]);
- javascript-hashchange事件和歷史狀態(tài)管理實(shí)例分析
- 小發(fā)現(xiàn)之淺談location.search與location.hash的問(wèn)題
- location.hash保存頁(yè)面狀態(tài)的技巧
- window.location.hash知識(shí)匯總
- window.location.hash 使用說(shuō)明
- 利用location.hash實(shí)現(xiàn)跨域iframe自適應(yīng)
- window.location.hash 屬性使用說(shuō)明
- hash特點(diǎn)、hashchange事件介紹及其常見(jiàn)應(yīng)用場(chǎng)景
相關(guān)文章
使用jQuery內(nèi)容過(guò)濾選擇器選擇元素實(shí)例講解
內(nèi)容過(guò)濾選擇器:根據(jù)元素中的文字內(nèi)容或所包含的子元素特征獲取元素,其文字內(nèi)容可以模糊或絕對(duì)匹配進(jìn)行元素定位,接下來(lái)為大家詳細(xì)介紹下jQuery選擇器,感興趣的朋友可以參考下哈2013-04-04原來(lái)Jquery.load的方法可以一直load下去
使用jQuery.load方法加載一個(gè)網(wǎng)頁(yè),那么這個(gè)網(wǎng)頁(yè)內(nèi)部的js代碼是否能夠執(zhí)行呢,答案是肯定的,這就相當(dāng)于把load的內(nèi)容與主頁(yè)面進(jìn)行了合并一樣2011-03-03jQuery插件artDialog.js使用與關(guān)閉方法示例
這篇文章主要介紹了jQuery插件artDialog.js使用與關(guān)閉方法,結(jié)合具體實(shí)例形式分析了jQuery彈出窗口插件artDialog.js的簡(jiǎn)單使用方法及相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-10-10基于jQuery實(shí)現(xiàn)滾動(dòng)切換效果
這篇文章主要為大家詳細(xì)介紹了基于jQuery實(shí)現(xiàn)滾動(dòng)切換效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12Jquery實(shí)現(xiàn)textarea根據(jù)文本內(nèi)容自適應(yīng)高度
本文給大家分享的是Jquery實(shí)現(xiàn)textarea根據(jù)文本內(nèi)容自適應(yīng)高度,這些在平時(shí)的項(xiàng)目中挺實(shí)用的,所以抽空封裝了一個(gè)文本框根據(jù)輸入內(nèi)容自適應(yīng)高度的插件,這里推薦給小伙伴們。2015-04-04jQuery操作select下拉框的text值和value值的方法
這篇文章主要介紹了jQuery操作select下拉框的text值和value值的方法,需要的朋友可以參考下2014-05-05Zero Clipboard實(shí)現(xiàn)瀏覽器復(fù)制到剪貼板的方法(多個(gè)復(fù)制按鈕)
這篇文章主要介紹了Zero Clipboard實(shí)現(xiàn)瀏覽器復(fù)制到剪貼板的方法,帶有多個(gè)復(fù)制按鈕效果,涉及jQuery插件ZeroClipboard.js具體使用步驟與相關(guān)技巧,需要的朋友可以參考下2016-03-03jquery中常用的SET和GET$(”#msg”).html循環(huán)介紹
jquery中常用的SET和GET$(”#msg”).html循環(huán)想必大家并不陌生吧,本文整理了一些,感興趣的朋友可以參考下2013-10-10