location 對(duì)象是最有用的 BOM 對(duì)象之一,它提供了與當(dāng)前窗口中加載的文檔有關(guān)的信息,還提供了一些導(dǎo)航功能。事實(shí)上,location 對(duì)象是很特別的一個(gè)對(duì)象,因?yàn)樗仁?window 對(duì)象的屬性,也是 document 對(duì)象的屬性,換句話說,window.location 和 document.location 引用的是同一個(gè)對(duì)象。location 對(duì)象的用處不只表現(xiàn)在它保存著當(dāng)前文檔信息,還表現(xiàn)在它將 URL 解析為獨(dú)立的片段,讓開發(fā)人員可以通過不同的屬性訪問這些片段。

location 對(duì)象的屬性列表
查詢字符串參數(shù)
雖然通過上面的屬性可以訪問到 location 對(duì)象的大多數(shù)信息,但其中訪問 URL 包含的查詢字符串的屬性并不方便。盡管 location.search 返回從問號(hào)到 URL 末尾的所有內(nèi)容,但卻沒有辦法逐個(gè)訪問其中的每個(gè)字符串參數(shù)。因此,可以像下面這樣創(chuàng)建一個(gè)函數(shù),用于解析查詢字符串,然后返回所有參數(shù)的一個(gè)對(duì)象:

獲取查詢字符串通用函數(shù)
位置操作
使用 location 對(duì)象可以通過很多方式來改變?yōu)g覽器的位置。首先,也是最常用的方式,就是使用 assign() 方法并為其傳遞一個(gè) URL ,如下:

assign() 方法示例
上面的代碼可以立即打開新的 URL 并在瀏覽器的歷史記錄中生成一條記錄。如果是將 location.href 或 window.location 設(shè)置為一個(gè) URL 值,也會(huì)以該值調(diào)用 assign() 方法。下面的代碼與顯式調(diào)用 assign() 方法效果完全一樣:

window.location 和 location.href
在這些改變?yōu)g覽器位置的方法中,最常用的是設(shè)置 location.href 屬性。
另外,修改 location 對(duì)象的其他屬性也可以改變當(dāng)前加載的頁(yè)面,下面將展示修改屬性來改變 URL 值:

location 中一些其他屬性的修改
上述任何一種方式修改 URL 之后,瀏覽器的歷史記錄中就會(huì)生成一條新記錄,因此可以通過瀏覽器的 “后退” 按鈕回到前一個(gè)頁(yè)面。要禁止這種行為,可以使用 replace() 方法。這個(gè)方法只接收一個(gè)參數(shù),即需要導(dǎo)航到的 URL,結(jié)果會(huì)使瀏覽器位置改變,但不會(huì)在歷史記錄中生成記錄,在調(diào)用 replace() 方法之后,就不能回到前一個(gè)頁(yè)面了,例:

location.replace() 方法示例
與位置有關(guān)的最后一個(gè)方法是 reload() ,其作用是重新加載當(dāng)前顯示的頁(yè)面。如果調(diào)用 reload() 時(shí)不傳遞任何參數(shù),頁(yè)面就會(huì)以最有效的方式重新加載,如果頁(yè)面從上次請(qǐng)求以來并沒有改變過,頁(yè)面就會(huì)從瀏覽器緩存中重新加載。如果需要強(qiáng)制從服務(wù)器重新加載,可以給該方法傳遞參數(shù) true :

reload() 方法示例
位于 reload() 調(diào)用之后的代碼可能會(huì)也可能會(huì)不執(zhí)行,這主要取決于當(dāng)時(shí)網(wǎng)絡(luò)狀態(tài)或系統(tǒng)資源等,因此,最好將 reload() 放在代碼最后一行。
本文由網(wǎng)上采集發(fā)布,不代表我們立場(chǎng),轉(zhuǎn)載聯(lián)系作者并注明出處:http://zmlzfb.cn/shbk/39469.html