URL中的hash,也就是網址井號后面的部分,其實是一塊寶地,它能創建瀏覽歷史,也能存儲一些簡單數據。從 Twitter 開始Hash被用來定義Ajax內容,雖然如今已被HTML5的 pushState 所替代。這里介紹 jQuery ? Hash ? 插件 ,可以幫助你完成簡單數據的存儲。
?
Hash存儲數據有什么用
首先傳統URL傳遞數據的弊端是,對搜索引擎不友好,搜索引擎會認為 /example和/example?key=val是不同的網址,然而hash則不同,搜索引擎認為 /example 和 /exmaple#;key=val 會是兩個完全相同的網頁。此外,用hash存儲數據也不必刷新頁面。
hash可以作為一種本地臨時存儲的解決方案,正如cookie那樣。可以在url中保存臨時的用戶狀態這是cookie做不了的。例如含有Ajax頁面的刷新,就可以直接利用hash存儲當前的狀態。再例如你可以配合 Hashchange 監聽來完成一些事情。
這算是一個嘗試,雖然目前少有人在hash存數據上作文章,但是如果你真的需要,可以用這個插件參考一下。
?
看看什么樣子的
下圖即是一個實例,網址正常部分是 example.com/demo ,然后在網址hash中存了數據keyA=valA和keyB=valB;它們之間用分號“;”隔開,第一個key名前也有分號。
如果要用傳統URL傳遞,則是example.com/demo ?keyA=valA&keyB=valB 的樣子。
另外,如果URL本身帶有一段hash,比如存在網頁本身的錨點書簽跳轉,再儲存數據時則可以是這樣:
其中 index 并不是數據,前面帶有分號的才是數據。很容易區分。
?
怎樣使用 jQuery ? Hash 插件
使用方法非常簡單。分別有設置值、增加一對值,改變值、讀取值,以及刪除值。此外,此插件必須先引入 jQuery ,很好兼容大多的版本。
?
設置值
只需運行
$.hash( ~keyName, ~value );
?
即可設置一對值。例如,運行$.hash("color", "yellow");即可存儲“color=yellow”到URL的hash里,使URL看起來像
example.htm #;color=yellow
?
增加值
想要增加一對值,同樣運行設置值的腳本即可。例如再次運行$.hash("fontSize","20px;"),既可新存儲這對值到hash里,使URL看起來像
example.htm #;color=yellow;fontSize=20px
?
改變值
同樣運行設置值的腳本,第二個參數改為你想要新值即可,這個操作會把此對值移到hash末尾突顯改變。
例如運行$.hash("color","green");即可改變hash里已存儲的color的值,使得URL看起來像
example.com #;fontSize=20px;color=green
?
讀取值
只需運行
$.hash( ~keyName )
?
即可讀取名為~keyName的值,例如現在運行$.hash("fontSize");則會返回“20px”。
?
刪除值
要刪除已經存儲的一對值,可以運行
$.hash( ~keyName, null )
?
來刪除它。例如現在運行$.hash("color", null);既可刪除hash中已存儲的color=green數據,使得URL看起來像
example.htm #;fontSize=20px
?
jQuery ? Hash 插件 Demo
如果你還不理解或者想要看demo, 按此 。
?
獲得 jQuery ? hash 插件
要引入此插件非常簡單,你可以 到這里下載此js插件文件 。
然后在至少引入 jQuery 后的某個位置加入
<script src="jQuery.hash.js" type="text/javascript"></script>
?
?
寫在最后
插件下載鏈接在上面。在此要感謝 Lewis ,這個插件是基于他的 jQuery ? hash plugin修改的。目前不支持中文開頭的key名。首先我考慮了一下,hash后面如果出現的是?或者&這些正規的參數符號的話比較容易和hash井號前面的參數混淆,所以我選擇了一個更美觀的符號“;”分號,占用體積小幾乎看不到,但是不影響使用;不會和前面出現問號和and符號混淆,而且這個也不需要兩個符號,只需要分號而已。但如果你需要傳統and符,你可以去原作者網站上下載,或者基于這個插件自行修改。
謝謝收看。
?
原文: http://blog.netsh.org/posts/jquery-hash-plugin_1455.netsh.html
?
更多參考:
1.? http://benalman.com/code/projects/jquery-hashchange/docs/files/jquery-ba-hashchange-js.html
2.? https://github.com/gcoguiec/jquery-hash
3. ? https://github.com/blixt/js-hash
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
