BOM的介紹
JavaScript基礎分為三個部分:
-
BOM:瀏覽器對象模型,操作瀏覽器部分功能的API。比如讓瀏覽器自動滾動。
什么是BOM
BOM:Browser Object Model,瀏覽器對象模型。
BOM的結構圖:
從上圖也可以看出:
-
window對象是BOM的頂層(核心)對象,所有對象都是通過它延伸出來的,也可以稱為window的子對象。
-
DOM是BOM的一部分。
window對象:
-
window對象是JavaScript中的頂級對象。
-
全局變量、自定義函數也是window對象的屬性和方法。
-
window對象下的屬性和方法調用時,可以省略window。
BOM 的常見內置方法和內置對象
window對象
彈出系統對話框
比如說,alert(1)
是window.alert(1)
的簡寫,因為它是window的子方法。系統對話框有三種:
alert(); //不同瀏覽器中的外觀是不一樣的 confirm(); //兼容不好 prompt(); //不推薦使用
打開窗口、關閉窗口
1、打開窗口:
window.open(url,target) //url:要打開的地址。 //target:新窗口的位置。可以是:_blank 、_self、 _parent 父框架。

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <!--行間的js中的open() window不能省略--> <button onclick="window.open('https://www.luffycity.com/')">路飛學城</button> <button>打開百度</button> <button onclick="window.close()">關閉</button> <button>關閉</button> </body> <script type="text/javascript"> var oBtn = document.getElementsByTagName('button')[1]; var closeBtn = document.getElementsByTagName('button')[3]; oBtn.onclick = function(){ //open('https://www.baidu.com') //打開空白頁面 open('about:blank',"_self") } closeBtn.onclick = function(){ if(confirm("是否關閉?")){ close(); } } </script> </html>
2、關閉窗口:
window.close() - 關閉當前窗口 (只能關閉用js的window.open()打開的頁面,了解一下就行了)
獲取窗口寬高
window.innerHeight - 瀏覽器窗口的內部高度
window.innerWidth - 瀏覽器窗口的內部寬度
定時器
在js中的定時器分兩種:1、setTimeout() 2、setInterval()
setTimeOut()
只在指定時間后執行一次
/定時器 異步運行
function hello(){
alert("hello"); } //使用方法名字執行方法 var t1 = window.setTimeout(hello,1000); var t2 = window.setTimeout("hello()",3000);//使用字符串執行方法 window.clearTimeout(t1);//去掉定時器
setInterval()
在指定時間為周期循環執行
/實時刷新 時間單位為毫秒 var t = setInterval('refreshQuery()',8000); /* 刷新查詢 */ function refreshQuery(){ console.log('每8秒調一次') }
window.clearInterval(t)
兩種方法根據不同的場景和業務需求擇而取之,
對於這兩個方法,需要注意的是如果要求在每隔一個固定的時間間隔后就精確地執行某動作,那么最好使用setInterval,而如果不想由於連續調用產生互相干擾的問題,尤其是每次函數的調用需要繁重的計算以及很長的處理時間,那么最好使用setTimeout
location對象
window.location
可以簡寫成location。location相當於瀏覽器地址欄,可以將url解析成獨立的片段。
location對象的屬性
-
href:跳轉
-
hash 返回url中#后面的內容,包含#
-
host 主機名,包括端口
-
hostname 主機名
-
pathname url中的路徑部分
-
protocol 協議 一般是http、https
-
search 查詢字符串
location.href屬性舉例:
舉例1:點擊盒子時,進行跳轉。
<body> <div>smyhvae</div> <script> var div = document.getElementsByTagName("div")[0]; div.onclick = function () { location.href = "http://www.baidu.com"; //點擊div時,跳轉到指定鏈接 // window.open("http://www.baidu.com","_blank"); //方式二 } </script> </body>
舉例2:5秒后自動跳轉到百度。
有時候,當我們訪問一個不存在的網頁時,會提示5秒后自動跳轉到指定頁面,此時就可以用到location。舉例:
<script> setTimeout(function () { location.href = "http://www.baidu.com"; }, 5000); </script>
location.reload():重新加載
setTimeout(function(){ //3秒之后讓網頁整個刷新 window.location.reload(); },3000)
navigator對象
window.navigator 的一些屬性可以獲取客戶端的一些信息。
-
userAgent:系統,瀏覽器)
-
platform:瀏覽器支持的系統,win/mac/linux
例子:
console.log(navigator.userAgent);
console.log(navigator.platform);
history對象
1、后退:
history.back()
history.go(-1):0是刷新
2、前進:
history.forward()
history.go(1)
用的不多。因為瀏覽器中已經自帶了這些功能的按鈕。
screen對象(了解即可)
屏幕對象,不常用。
screen.availWidth - 可用的屏幕寬度
screen.availHeight - 可用的屏幕高度