首先要知道Location這個對象以及這個對象中的一些屬性: href:設置或返回完整的url.如本博客首頁返回http://www.cnblogs.com/wymninja/ host:設置或返回主機名和當前的URL的埠號。本博客首頁返回www.cnblogs.com hostname:設置或返 ...
首先要知道Location這個對象以及這個對象中的一些屬性:
href:設置或返回完整的url.如本博客首頁返回http://www.cnblogs.com/wymninja/
host:設置或返回主機名和當前的URL的埠號。本博客首頁返回www.cnblogs.com
hostname:設置或返回當前URL的主機名。本博客首頁返回www.cnblogs.com
hash:設置或返回從井號(#)開始的URL(錨)。本博客首頁返回 空
pathname:設置或返回當前URL的路徑部分。本博客首頁返回/wymninja/
port:設置或返回當前URL的埠號。本博客首頁返回 空
protocol:設置或返回當前URL的協議。本博客首頁返回 http:
search:設置或返回從問號 (?) 開始的 URL(查詢部分)
location對象屬性圖示:圖片來自慕課網
location的href屬性存放的是文檔的完整 URL,其他屬性則分別描述了 URL 的各個部分。這些屬性與 Anchor 對象(或 Area 對象)的 URL 屬性非常相似。當一個 Location 對象被轉換成字元串,href 屬性的值被返回。這意味著你可以使用表達式 location 來替代 location.href。不過 Anchor 對象表示的是文檔中的超鏈接,Location 對象表示的卻是瀏覽器當前顯示的文檔的 URL(或位置)
var s = location.toString(); console.log(s); #result //http://www.cnblogs.com/wymninja/
Location對象的這些屬性都是可讀可寫的,如果改變了文檔的location.href,則瀏覽器會載入新的頁面。同樣如果改變了location.hash,則頁面會跳轉到新的錨點,但此時頁面不會重載。
Location對象還有三個方法:assign()、reload()、replace()
assign():載入新的文檔
reload():可以重新裝載當前文檔
replace():可以裝載一個新文檔而無須為它創建一個新的歷史記錄。也就是說,在瀏覽器的歷史列表中,新文檔將替換當前文檔。這樣就不能通過【返回】按鈕返回當前文檔了。
註意:
不要混淆Window對象的location屬性和Document對象的location對象。前者引用一個Location對象,後者只是一個 只讀字元串,並不具有Location對象的任何特性。Document.location與document.URL是同義的。但是,當存在伺服器重定 向時,document.location包含的是已經裝載的URL,而location.href包含的則是原始請求的文檔的URL。
所以要獲取瀏覽器URL中查詢字元串的參數。也就是location.search部分。以慕課網圖片為例就是?courseid = 8&cahpterid = 86中的8和86!!!!然後就利用如下代碼:
function getQuery(name){ var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"); var r = window.location.search.substr(1).match(reg);//從?之後開始匹配如getQuery(courseid)返回一個數組["courseid=8","","8","&",index:0,input:"courseid=8"]
if (r!=null) return unescape(r[2]); return null; }
其中:
對match不清楚可查閱我的博客Javascript string對象
unescape 對參數進行解碼,如空格解碼為20%。
原文:https://www.cnblogs.com/wymninja/p/5716317.html