天天看點

BOM對象-JavaScript筆記什麼是BOM

BOM對象-JavaScript筆記

什麼是BOM

BOM - 浏覽器對象模型(BrowserObjectModel)

浏覽器對象模型(Browser Object Model,簡稱BOM)是浏覽器的内置對象管理模型。

可以對浏覽器視窗進行通路和操作。使用 BOM,開發者可以移動視窗、改變狀态欄中的文本以及執行其他與頁面内容不直接相關的動作。

在前端頁面開發時,可以通過對浏覽器的内置對象進行控制,提高Html頁面的動态效果,增強使用者對頁面檔案的體驗。

BOM對象模型結構

BOM對象-JavaScript筆記什麼是BOM

後續可以根據該圖協助了解

window對象

window對象-BOM核心

BOM 的操作入口為 window 對象,即浏覽器下的全局對象

window,顧名思義,視窗對象。它表示整個浏覽器視窗,主要用來操作浏覽器視窗。同時, window對象還是 ECMAScript(JavaScript的一個标準)中的 Global (全局)對象,因而所有全局變量和函數都是它的屬性,且所有原生的構造函數及其他函數也都存在于它的命名空間下。

  • 所有浏覽器都支援window對象。它表示浏覽器視窗
  • —個html文檔對應—個window對象
  • 控制浏覽器視窗的
  • window對象不需要建立對象,直接使用即可
  • 所有JavaScript全局對象、函數以及變量均自動成為window對象的成員

挂載在window對象上的全局方法:

彈框類的方法。前面省略window

alert(‘提示資訊’)

confirm(“确認資訊”)

prompt(“彈出輸入框”)

open(“url位址”,“_black或_self”,“新視窗的大小”)

close() 關閉目前的網頁

定時器,清除定時器

setTimeout(函數,時間) 隻執行一次

clearTimeout(定時器名稱) 清除定時器,用于停止執行setTimeout()方法的函數代碼。

setInterval(函數,時間) 無限執行

clearInterval() 方法用于停止 setInterval() 方法執行的函數代碼。

Cookies 用于存儲 web 頁面的使用者資訊。

JavaScript 可以使用 document.cookie 屬性來建立 、讀取、及删除 cookies。

document.cookie 将以字元串的方式傳回所有的 cookies,類型格式: cookie1=value; cookie2=value; cookie3=value;

全局變量

1-聲明在最外層的變量為全局變量(聲明在函數内部為局部變量)

2-将變量挂載到window對象上即為全局變量(可省略window,即隐式聲明)

如果需要聲明全局變量,盡量選擇在最外層var 變量名的方式聲明,

也可以使用window.變量名的方式,但盡量不要使用隐式聲明

( 區分顯示聲明與隐式聲明當我們使用通路一個沒有聲明的變量時,JS會報錯;而當我們給一個沒有聲明的變量指派時,JS不會報錯,相反它會認為我們是要隐式聲明一個全局變量 更多)

window對象常用方法

打開一個新視窗

window.open()

 window.open(“url位址”,“_black或_self或視窗名稱”,“新視窗的大小width、height、left、top”)

關閉目前視窗

 window.close()

window對象常用屬性

BOM對象-JavaScript筆記什麼是BOM

window對象常用事件

1.頁面加載事件

用于在網頁加載完畢後立刻執行的操作

方式1:window.onload = function(){ }

window.addEventListener(‘load’,function(){ })

window.onload 是視窗(頁面)加載事件,當文檔内容完全加載成功,就會觸發該事件(包括圖像,腳本檔案,CSS檔案等),就調用的處理函數。

注意:

1.有了 window.pnload 就可以把JS代碼寫到頁面元素的上方,因為 onload 是等頁面内容全部加載完畢,再去執行處理函數。

  2.window .onload 傳統注冊事件方式隻能寫一次,如果有多個,會議最後一個 window.onload 為準。

  3.如果使用 addEventListener 則沒有限制

方式2:document.addEventListener(‘DOMContentLoaded’,function(){ })

 即:window.οnlοad=匿名函數

DOMContentLoaded 事件觸發時,僅當 DOM 加載完成,不包括樣式表,圖檔,flash等等。IE9以上才支援

注意:

如果頁面的圖檔很多的話,從使用者通路到 onload 觸發可能需要較長的時間,互動效果就不能實作,必然影響使用者體驗,此時用DOMContentLoaded 時間比較合适。

2.調整視窗大小事件

window.onresize = function(){ }

window.addEventLisener(‘load’,function(){});

window.onload 是調整視窗大小加載事件,當觸發時就調用是處理函數

注意:

1.隻要視窗大小發生像素變化就會觸發這個事件

 2.經常利用這個事件完成響應式布局,window.innerWidth 目前螢幕寬度。innerHeight 目前螢幕高度

3.定時器(兩種方式)

1.setTimeout( ) (方式一)

文法規範:window.setTimeout(調用函數,延時時間); // 這裡的調用函數,也稱作是回調函數 callback

1.這個 window 在調用時可以省略

2.這個延時時間機關是毫秒,可以省略不寫,如果省略預設是0,立即執行

3.這個調用函數可以直接寫函數(callback),還可以寫函數名(‘callback( )’)

4.頁面中可能有很多的定時器,我們經常給定時器加辨別符(名字)區分

案例:(三種寫法)

方式1:

setTimeout(function(

console.log(‘時間到了’);

){},3000)

方式2:

function callback(){

console.log(‘時間到’);

}

var timer1 = setTimeout(callback,3000);

方式3:

var timer2 = setTimeout(‘callback()’,5000); //不推薦使用

2.setInterval( )(方式二)

window.setInterval(回調函數,[ 間隔的毫秒 ]);

setInterval( ) 方法重複調用一個函數,每隔這個時間,就去調用一次回調函數

3.setTimeout 和 setInterval 的差別:

3.1 setTimeout 延時時間到了,就去調用這個回調函數,隻調用一次就結束這個定時器

3.2 setInterout 每隔這個延時時間,就去調用這個回調函數,會調用很多次,重複調用這個函數

2.清除定時器(兩種方式)

1.clearTimeout(方式一)

window.clearTimeout( timeoutID ); // window 也可以省略

裡面的參數就是定時器的辨別符

  clearTimeout( ) 方法取消了之前通過調用 setTimeout( ) 建立的定時器

案例:

var timer = setTimeout(function(){

console.log(‘彈出來了’);

},2000);

btn.addEventListener(‘click’,function(){

clearTimeout( timer );

})

2.clearInterval( )(方式二)

var timer= null ; // 設定成全局變量,才能在不同函數中使用

btns[0].οnclick=function(){

timer=setInterval(function(){

console.log(‘123’);

},1000);

}

btns[1].οnclick=function(){

clearInterval(timer);

}

location對象

location 對象

對象用于獲得目前頁面的位址 (URL),并把浏覽器重定向到新的頁面。

window.location 對象在編寫時可不使用 window 這個字首。 一些例子:

location.herf = ‘url位址’

location.hostname 傳回 web 主機的域名

location.pathname 傳回目前頁面的路徑和檔案名

location.port 傳回 web 主機的端口 (80 或 443)

location.portocol 傳回頁面使用的web協定。 http:或https:

  

BOM對象-JavaScript筆記什麼是BOM

navigator對象

navigator 對象

對象提供了與浏覽器有關的資訊。userAgent是最常用的屬性,用來完成浏覽器判斷。

window.navigator 對象在編寫時可不使用 window 這個字首。

BOM對象-JavaScript筆記什麼是BOM

screen對象

主要用來擷取使用者的螢幕資訊。

window.screen對象在編寫時可以不使用 window 這個字首

height: 擷取整個螢幕的高。

width : 擷取整個螢幕的寬。

availHeight: 整個螢幕的高減去系統部件的高( 可用的螢幕寬度 )

availWidth : 整個螢幕的寬減去系統部件的寬(可用的螢幕高度 )

  

BOM對象-JavaScript筆記什麼是BOM

history對象

history 對象

對象包含浏覽器的曆史。

window.history對象在編寫時可不使用 window 這個字首。

back() 傳回上一頁。

forward() 傳回下一頁。

go(“參數”) -1表示上一頁,1表示下一頁。

  

BOM對象-JavaScript筆記什麼是BOM

frames架構

如果頁面中包含架構,則每個架構都擁有自己的window對象,并且儲存在frames集合中

BOM對象-JavaScript筆記什麼是BOM

在父頁面中,可通過window.frames[“frame1”]通路子頁面的window對象(需等frame加載完畢)

在子頁面中,可通過window.parent通路父頁面的window對象(需等frame加載完畢)

子調父:

元素:

① window.parent.document.getElementById(“父頁面元素ID”);

②window.parent.document.getElementsByTagName(“父頁面元素标簽名”)[i];

③window.parent.document.getElementsByClassName(“父頁面元素類名”)[i];

方法:window.parent.父頁面方法;

父調子:

元素:window.frames[iframe的name屬性值];

方法:

① document.getElementById(“子頁面元素ID”).contentWindow.子頁面方法名;

② document.getElementsByTagName(“子頁面元素标簽名”)[i].contentWindow.子頁面方法名;

③ document.getElementsByClassName(“子頁面元素類名”)[i].contentWindow.子頁面方法名;

文中部分内容來源網絡搜尋,此文僅為學習使用

繼續閱讀