JavaScript的三種BOM對(duì)象
window 對(duì)象給我們提供了一個(gè) location 屬性用于獲取或設(shè)置窗體的 URL,并且可以用于解析 URL 。 因?yàn)檫@個(gè)屬性返回的是一個(gè)對(duì)象,所以我們將這個(gè)屬性也稱(chēng)為 location 對(duì)象。
接下來(lái)我們就具體的看一下。
一、location對(duì)象
1、URL
統(tǒng)一資源定位符 (Uniform Resource Locator, URL) 是互聯(lián)網(wǎng)上標(biāo)準(zhǔn)資源的地址。互聯(lián)網(wǎng)上的每個(gè)文件都有一個(gè)唯一的 URL,它包含的信息指出文件的位置以及瀏覽器應(yīng)該怎么處理它。
URL的一般語(yǔ)法格式為:
protocol://host[:port]/path/[?query]#fragment
http://www.itcast.cn/index.html?name=andy&age=18#link
| 組成 | 說(shuō)明 |
|---|---|
| protocol | 通信協(xié)議,常用的http,ftp,maito等 |
| host | 主機(jī)(域名) |
| port | 端口號(hào)可選,省略時(shí)使用方案的默認(rèn)端口,如http的默認(rèn)端口為80 |
| path | 路徑,由零個(gè)或多個(gè)‘/'符號(hào)隔開(kāi)的字符串,一般用來(lái)表示主機(jī)上的一個(gè)目錄或文件地址 |
| query | 參數(shù) 以鍵值對(duì)的形式,通過(guò)&符號(hào)分隔開(kāi)來(lái) |
| fragment | 片段 #后面內(nèi)容 常見(jiàn)于鏈接,錨點(diǎn) |
2、location 對(duì)象的屬性

我們可以通過(guò)這些屬性得到地址欄中對(duì)應(yīng)的信息,舉個(gè)例子:
比如:在csdn首頁(yè),打開(kāi)我們的開(kāi)發(fā)者工具–>控制臺(tái),輸入location,就會(huì)出現(xiàn)location對(duì)象的很多屬性和返回值:

或者我們直接在控制臺(tái)輸入對(duì)應(yīng)的屬性,就可以拿到對(duì)應(yīng)的返回值。

比如我們現(xiàn)在做一個(gè)點(diǎn)擊按鈕跳轉(zhuǎn)頁(yè)面的效果:
<body>
<button>跳轉(zhuǎn)</button>
<div></div>
<script>
var btn = document.querySelector('button');
var div = document.querySelector('div');
var timer = 5;
btn.addEventListener('click',function(){
time()
})
var time = setInterval(function(){
if(timer == 0) {
this.location.
}
else{
div.innerHTML = '頁(yè)面將在'+timer+'秒后跳轉(zhuǎn)'
timer--;
}
},1000);
</script>
</body>
運(yùn)行結(jié)果為:

3、location 對(duì)象的方法
| location對(duì)象方法 | 返回值 |
|---|---|
| location.assign() | 跟href一樣,可以跳轉(zhuǎn)頁(yè)面(也稱(chēng)為重定向頁(yè)面) |
| location.replace() | 替換當(dāng)前頁(yè)面,因?yàn)椴挥涗洑v史,所以不能后退頁(yè)面 |
| location.reload() | 重新加載頁(yè)面,相當(dāng)于刷新按鈕或者f5 如果參數(shù)為true 強(qiáng)制刷新 ctrl+f5 |
例如,我們也可以通過(guò)使用location對(duì)象方法來(lái)實(shí)現(xiàn)跳轉(zhuǎn)頁(yè)面:
<button>點(diǎn)擊跳轉(zhuǎn)</button>
<script>
var btn = document.querySelector('button');
btn.addEventListener('click',function(){
location.assign('https://www.baidu.com')
})
</script>

location.assign() 這種方法實(shí)現(xiàn)的跳轉(zhuǎn)是可以后退頁(yè)面,但是 location.replace() 因?yàn)椴挥涗洑v史,所以不能后退頁(yè)面。
二、navigator對(duì)象
navigator 對(duì)象包含有關(guān)瀏覽器的信息,它有很多屬性,我們最常用的是 userAgent,該屬性可以返回由客戶(hù)機(jī)發(fā)送服務(wù)器的 user-agent 頭部的值。
if((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i))) {
window.location.href = ""; //手機(jī)
} else {
window.location.href = ""; //電腦
}
三、history對(duì)象
| history對(duì)象方法 | 作用 |
|---|---|
| back() | 可以后退功能 |
| forward() | 前進(jìn)功能 |
| go(參數(shù)) | 前進(jìn)后退功能 參數(shù)如果是1,前進(jìn)一個(gè)頁(yè)面 如果是-1 后退一個(gè)頁(yè)面 |
比如我們現(xiàn)在有連個(gè)頁(yè)面,想要通過(guò)一個(gè)按鈕實(shí)現(xiàn)前進(jìn)后退功能,可以分別給兩個(gè)頁(yè)面的按鈕綁定forward方法和history方法,如下所示:
index.html
<body>
<a href="list.html">去到列表頁(yè)面</a>
<button>前進(jìn)</button>
<script>
var btn = document.querySelector('button');
btn.addEventListener('click',function(){
history.forward()
})
</script>
</body>
list.html
<body>
<a href="index.html">返回主頁(yè)面</a>
<button>后退</button>
<script>
var btn = document.querySelector('button');
btn.addEventListener('click',function(){
history.back()
})
</script>
</body>
實(shí)現(xiàn)效果為:

或者我們也可以使用history.go(1)實(shí)現(xiàn)前進(jìn)功能;用history.go(1)實(shí)現(xiàn)后退功能。
總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
JS實(shí)現(xiàn)仿QQ面板的手風(fēng)琴效果折疊菜單代碼
這篇文章主要介紹了JS實(shí)現(xiàn)仿QQ面板的手風(fēng)琴效果折疊菜單代碼,涉及JavaScript基于鼠標(biāo)事件動(dòng)態(tài)操作頁(yè)面元素樣式的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09
淺談js的html元素的父節(jié)點(diǎn),子節(jié)點(diǎn)
下面小編就為大家?guī)?lái)一篇淺談js的html元素的父節(jié)點(diǎn),子節(jié)點(diǎn)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-08-08
JavaScript中數(shù)據(jù)結(jié)構(gòu)與算法(五):經(jīng)典KMP算法
這篇文章主要介紹了JavaScript中數(shù)據(jù)結(jié)構(gòu)與算法(五):經(jīng)典KMP算法,本文詳解了KMP算法的方方面在,需要的朋友可以參考下2015-06-06
詳解JS WebSocket斷開(kāi)原因和心跳機(jī)制
這篇文章主要介紹了JS WebSocket斷開(kāi)原因和心跳機(jī)制,對(duì)websocket感興趣的同學(xué),可以參考下2021-05-05
Echarts讀取動(dòng)態(tài)數(shù)據(jù)完整代碼
這篇文章主要給大家介紹了關(guān)于Echarts讀取動(dòng)態(tài)數(shù)據(jù)的相關(guān)資料,使用Echarts畫(huà)圖時(shí),數(shù)據(jù)一般不是靜態(tài)寫(xiě)死的,而是通過(guò)后端接口動(dòng)態(tài)獲取的,需要的朋友可以參考下2023-10-10
JAVASCRIPT模式窗口中下載文件無(wú)法接收iframe的流
模式窗口中下載文件,有時(shí)在下載時(shí)發(fā)現(xiàn)服務(wù)器無(wú)法接收iframe的流,因?yàn)樵谀J酱翱谥袥](méi)有觸發(fā)iframe的src重新定向事件2013-10-10
Javascript運(yùn)行機(jī)制之Event Loop
這篇文章主要介紹了Javascript運(yùn)行機(jī)制之Event Loop,在學(xué)習(xí)Event Loop前,首先需要了解的幾個(gè)概念Javascript是單線程、任務(wù)隊(duì)列、同步任務(wù)、異步任務(wù)、Javascript執(zhí)行棧,下面來(lái)看看文章的詳細(xì)介紹吧2021-12-12
原生JS實(shí)現(xiàn)旋轉(zhuǎn)輪播圖+文字內(nèi)容切換效果【附源碼】
這篇文章主要介紹了原生JS實(shí)現(xiàn)旋轉(zhuǎn)輪播圖+文字內(nèi)容切換效果,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-09-09

