location 對象是最有用的 BOM 對象之一,它提供了與當(dāng)前窗口中加載的文檔有關(guān)的信息,還提供了一些導(dǎo)航功能。事實上,location 對象是很特別的一個對象,因為它既是 window 對象的屬性,也是 document 對象的屬性,換句話說,window.location 和 document.location 引用的是同一個對象。location 對象的用處不只表現(xiàn)在它保存著當(dāng)前文檔信息,還表現(xiàn)在它將 URL 解析為獨立的片段,讓開發(fā)人員可以通過不同的屬性訪問這些片段。
location 對象的屬性列表
查詢字符串參數(shù)
雖然通過上面的屬性可以訪問到 location 對象的大多數(shù)信息,但其中訪問 URL 包含的查詢字符串的屬性并不方便。盡管 location.search 返回從問號到 URL 末尾的所有內(nèi)容,但卻沒有辦法逐個訪問其中的每個字符串參數(shù)。因此,可以像下面這樣創(chuàng)建一個函數(shù),用于解析查詢字符串,然后返回所有參數(shù)的一個對象:
獲取查詢字符串通用函數(shù)
位置操作
使用 location 對象可以通過很多方式來改變?yōu)g覽器的位置。首先,也是最常用的方式,就是使用 assign() 方法并為其傳遞一個 URL ,如下:
assign() 方法示例
上面的代碼可以立即打開新的 URL 并在瀏覽器的歷史記錄中生成一條記錄。如果是將 location.href 或 window.location 設(shè)置為一個 URL 值,也會以該值調(diào)用 assign() 方法。下面的代碼與顯式調(diào)用 assign() 方法效果完全一樣:
window.location 和 location.href
在這些改變?yōu)g覽器位置的方法中,最常用的是設(shè)置 location.href 屬性。
另外,修改 location 對象的其他屬性也可以改變當(dāng)前加載的頁面,下面將展示修改屬性來改變 URL 值:
location 中一些其他屬性的修改
上述任何一種方式修改 URL 之后,瀏覽器的歷史記錄中就會生成一條新記錄,因此可以通過瀏覽器的 “后退” 按鈕回到前一個頁面。要禁止這種行為,可以使用 replace() 方法。這個方法只接收一個參數(shù),即需要導(dǎo)航到的 URL,結(jié)果會使瀏覽器位置改變,但不會在歷史記錄中生成記錄,在調(diào)用 replace() 方法之后,就不能回到前一個頁面了,例:
location.replace() 方法示例
與位置有關(guān)的最后一個方法是 reload() ,其作用是重新加載當(dāng)前顯示的頁面。如果調(diào)用 reload() 時不傳遞任何參數(shù),頁面就會以最有效的方式重新加載,如果頁面從上次請求以來并沒有改變過,頁面就會從瀏覽器緩存中重新加載。如果需要強制從服務(wù)器重新加載,可以給該方法傳遞參數(shù) true :
reload() 方法示例
位于 reload() 調(diào)用之后的代碼可能會也可能會不執(zhí)行,這主要取決于當(dāng)時網(wǎng)絡(luò)狀態(tài)或系統(tǒng)資源等,因此,最好將 reload() 放在代碼最后一行。
本文由網(wǎng)上采集發(fā)布,不代表我們立場,轉(zhuǎn)載聯(lián)系作者并注明出處:http://beyondyourquote.com/shbk/39469.html