获取url的hash值
?
location是javascript里邊管理地址欄的內置對象,比如location.href就管理頁面的url,用location.href=url就可以直接將頁面重定向url。
而location.hash則可以用來獲取或設置頁面的標簽值。比如http://domain/#admin的location.hash="#admin"。利用這個屬性值可以做一個非常有意義的事情。
很多人都喜歡收藏網頁,以便于以后的瀏覽。不過對于Ajax頁面來說的話,一般用一個頁面來處理所有的事務,也就是說,如果你瀏覽到一個Ajax頁面里邊有意思的內容,想將它收藏起來,可是地址只有一個呀,下次你打開這個地址,還是得像以往一樣不斷地去點擊網頁,找到你鐘情的那個頁面。另外的話,瀏覽器上的“前進”“后退”按鈕也會失效,這于很多習慣了傳統頁面的用戶來說,是一個很大的使用障礙。
那么,怎么用location.hash來解決這兩個問題呢?其實一點也不神秘。
比如,我的作者管理系統,主要功能有三個:普通搜索、高級搜索、后臺管理,我分別給它們分配一個hash值:#search、#advsearch、#admin,在頁面初始化的時候,通過window.location.hash來判斷用戶需要訪問的頁面,然后通過javascript來調整顯示頁面。比如:
var hash;?hash=(!window.location.hash)?"#search":window.location.hash;?
window.location.hash=hash;?
?//調整地址欄地址,使前進、后退按鈕能使用?
switch(hash){ ??
case "#search": ?
selectPanel("pnlSearch"); ??//顯示普通搜索面板 ?
break; ???
case "#advsearch": ???
?... ???
case "#admin": ?
...?
}
通過window.location.hash=hash這個語句來調整地址欄的地址,使得瀏覽器里邊的“前進”、“后退”按鈕能正常使用(實質上欺騙了瀏覽器)。然后再根據hash值的不同來顯示不同的面板(用戶可以收藏對應的面板了),這就使得Ajax頁面的瀏覽趨于傳統化了。
| function getHashStringArgs() { ???//取得查詢的hash,并去除開頭的#號 ????var hashStrings = (window.location.hash.length > 0 ? window.location.hash.substring(1) : ""), ????//保持數據的對象 ???hashArgs = {}, ? ???//取得每一項hash對 ???items = hashStrings.length > 0 ? hashStrings.split("&") : [], ???item = null, ???name = null, ???value = null, ???i = 0, ???len = items.length; ? ???//逐個將每一項添加到hashArgs中 ???for (i = 0; i < len; i++) { ???????item = items[i].split("="); ???????name = decodeURIComponent(item[0]); ???????value = decodeURIComponent(item[1]); ???????if (name.length > 0) { ???????????hashArgs[name] = value; ???????} ???} return hashArgs; } ? http://127.0.0.1:8080/getHash.html#p=1&keyword=nice&t=2 getHashStringArgs(); //{"p":"1","keyword":"nice","t":"2"} |
轉載于:https://www.cnblogs.com/lcyuhe/p/5242617.html
總結
以上是生活随笔為你收集整理的获取url的hash值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 创建ACFS集群文件系统(命令方式)
- 下一篇: 软件过程与项目管理(作业一)