location對象是一個很特別的對象:既是window對象的屬性蝌衔,又是元素document對象的屬性闰歪。即:window.location === document.location
location
對象的所有屬性:
- hash —— 返回URL中的hash
- host —— 返回服務(wù)器名稱和端口號
- hostname —— 返回不帶端口號的服務(wù)器名稱
- href —— 返回當(dāng)前加載頁面的完整URL(同
location.toString()
的返回值) - pathname —— 返回URL中的目錄和/或文件名
- port —— 返回URL中指定的端口號
- protocol —— 返回頁面使用的協(xié)議
- search —— 返回UTL的查詢字符串嚎研。此字符串以問號開頭
1. 查詢字符串參數(shù)
location.search
沒有辦法逐個訪問其中的每個查詢字符串參數(shù)。故可以創(chuàng)建這樣的函數(shù)库倘,以解析查詢字符串临扮,然后返回包含所有參數(shù)的一個對象
function getQueryStringArgs(){
// 假設(shè)url為 https://www.google.co.jp/?hl=zh-cn&gws_rd=cr&ei=MFDjV73sHYHa0ASqnLvoAw#hl=zh-cn&q=2016%E5%B9%B4github%E4%B8%8A%E5%8D%81%E5%A4%A7+%E5%89%8D%E7%AB%AF
// 取得查詢字符串并去掉開頭的問號 —— location.search得到的是url問號后的字符串
var qs = (location.search.length > 0 ? location.search.substring(1) : ""),
args = {}, //保存數(shù)據(jù)的對象
items = qs.length ? qs.split("&") : [], //取得每一項
item = null,
name = null,
value = null,
i = 0, //在for循環(huán)中使用
len = items.length;
//逐個將每一項添加到args對象中
for (i = 0; i < len; i++) {
item = items[i].split("=");
name = decodeURIComponent(item[0]);
value = decodeURIComponent(item[1]);
if (name.length) {
args[name] = value;
}
}
return args;
}
2.位置操作
使用location對象可以通過很多方式來改變?yōu)g覽器的位置。最常用方式:使用assign()
方法并為其傳遞一個URL
location.assign("http://www.baidu.com");
在改變?yōu)g覽器位置的方法中教翩,最常用的是設(shè)置location.href
屬性杆勇。此外,修改location對象的其他屬性(hash饱亿、search蚜退、jostname、pathname彪笼、port)也可改變當(dāng)前加載的頁面钻注。
-
replace()
方法 用戶不能回到前一個頁面 -
reload()
方法 重新加載當(dāng)前顯示的頁面
location.reload(); //頁面會以最有效的方式重新加載(有可能從緩存中重新加載—)
location.reload(true) //強(qiáng)制從服務(wù)器重新加載