日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

BOM中的那点事-location

發布時間:2023/11/29 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BOM中的那点事-location 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

????? 現在來了解一下JavaScript中的location對象。location記錄了頁面文檔的位置信息,當然這個位置不是地址位置,而是指web中的文檔位置。location其實是一個很特殊的對象,首先它是window的屬性,同時也是document的屬性,換句話說window.location和document.location引用的同一個對象。location的有用之處不僅僅是它記錄文檔信息,同時它還將文檔的URL解析為不同的部分,編程時可以通過不同的屬性方便地引用各個部分,下表列出來location中URL的各個部分:

?屬性名稱?示??? 例?描???????述
?hash?#test?返回URL中的hash值,#號后跟數字,如果URL中沒有哈希值返回空字符串
?host?www.test.com:80?返回服務器名稱和端口號
?hostname?www.test.com?返回不含端口號的服務器名稱
?href?http://www.test.com?返回加載文檔的完整URL地址,location的toString函數返回該值
?pathname?/admin/login.html?返回URL中除server名稱和端口的目錄和文件名稱
?port?80?服務器端口
?protocol?http?加載的文檔URL所使用的協議
?search??q=javascript?返回查詢字符串

雖然通過location可以輕易訪問到查詢字符串,但是想獲取查詢字符串中的參數就沒有這么方便,可以通過如下函數來分離各個參數的名稱和值:

1 function getQueryStringArgs() { 2 //獲取查詢字符串,通過substring去掉最前面的問號 3 var qs = (location.search.length > 0) ? location.search.substring(1) : ""; 4 //創建保存查詢參數的對象 5 var args = {}; 6 //獲取參數每一項 7 var argItems = qs.split('&'); 8 var item = null, name = null, value = null; 9 //遍歷每個項目,通過=號分隔參數名稱和值 10 for (var i = 0; i < argItems.length; i++) { 11 item = argItems[i].split('='); 12 name = decodeURIComponent(item[0]); 13 value = decodeURIComponent(item[1]); 14 args[name] = value; 15 } 16 17 return args; 18 }

通過location我們可以改變加載的文檔。首先,也是最常用的方法就是使用assign,通過assign使窗體加載新指定的URL:

1 window.location.assign(http://www.google.com);

通過調用assign可以立即加載指定的URL,并且咋瀏覽器歷史記錄中增加一條,當然如果我們設置location.href屬性的值或者直接設置location對象為一個URL,效果等同于調用assign一樣,立即打開新的URL:

1 window.location = "http://www.google.com"; 2 window.location.href = http://www.google.com;

href的方式似乎是我們最常用的了。另外修改location中其他的屬性也會改變加載的頁面,使瀏覽器重新加載頁面,如下代碼:

1 window.location = "http://www.test.com"; 2 //修改hash 3 location.hash = "#section"; 4 //修改查詢字符串 5 location.search = "?q=javascript"; 6 //修改服務器名稱 7 location.hostname = "www.google.com"; 8 //修改pathname 9 location.pathname = "test";

當然通過上面的方法加載新的URL時會為瀏覽器歷史記錄增加一條,那么點擊向后的時候會退回的前一個地址,如果我們不想記錄瀏覽歷史,可以通過replace函數來實現該功能:

1 window.location.replace(http://www.cnblogs.com);

location還有一個有用的函數reload,通過reload可以從新加載文檔,但是首先會檢查緩存區是否有該地址的文檔,如果有從緩存區加載,否則從服務器加載,但是可以通過參數來取消這一策略:

1 //從新加載,有可能從緩存加載 2 window.location.reload(); 3 //從新加載,直接從服務器加載 4 window.location.reload(true);

location是一個非常有用的對象,在編程時經常會用到,在此僅當拋磚引玉。如果有其他值得注意的或者有錯誤歡迎指正。

?

有園友反應需要說明BOM和DOM,由于本文章不是介紹BOM和DOM,因此把相關鏈接貼出來,大家可以閱讀:

關于JavaScript組成:http://javascript.about.com/od/browserobjectmodel/a/bom01.htm

關于BOM:http://msdn.microsoft.com/en-us/library/ms952643.aspx

也可以看:http://titan.iteye.com/blog/60389

關于DOM請看:http://en.wikipedia.org/wiki/Document_Object_Model

和:http://www.w3.org/DOM/

轉載于:https://www.cnblogs.com/gyycyy/archive/2012/08/08/locationInBOM.html

總結

以上是生活随笔為你收集整理的BOM中的那点事-location的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。