BOM的核心對(duì)象是window政基,表示瀏覽器的一個(gè)實(shí)例
1.全局作用域
window對(duì)象同時(shí)扮演ECMAScript中Global對(duì)象的角色辐赞,故所有在全局作用域中聲明的變量鲜漩、函數(shù)都會(huì)變成window對(duì)象的屬性和方法浇坐。
比較:定義全局變量
與在window對(duì)象上直接定義屬性
的區(qū)別
- 全局變量不能通過delete操作符刪除
- 直接在window對(duì)象上定義的屬性可以
var age = 11;
window.wAge = 22;
//以下兩個(gè)delete操作在IE<9時(shí)均拋出錯(cuò)誤
delete window.age; //false 全局變量不能刪
delete window.wAge; //true 直接在window對(duì)象上定義的屬性可以刪
console.log(window.age); //11 未被刪掉
console.log(window.wAge); //undefined 已刪除
2.窗口關(guān)系及框架
若頁(yè)面中包含框架冰肴,則每個(gè)框架都有自己的window對(duì)象勺拣,且保存在frames集合中奶赠,通過索引或框架名稱來(lái)訪問相應(yīng)的window對(duì)象。
3.窗口位置
跨瀏覽器取得窗口左邊和上邊的位置
var leftPos = (typeof window.screenLeft == "number") ? window.screenLeft : window.screenX;
var topPos = (typeof window.screenLeft == "number") ? window.screenTop : window.screenY;
此外药有,moveTo()
和moveBy()
方法也可將窗口精確移動(dòng)到新位置
但這兩種方法可能會(huì)被瀏覽器禁用毅戈,且不適合框架,只能對(duì)最外層的window對(duì)象使用愤惰。
4.窗口大小
- innerWidth
- innerHeight
- outerWidth
- outerHeight
但由于各瀏覽器的規(guī)定不同苇经,無(wú)法確定瀏覽器窗口本身的大小。但可通過以下代碼取得頁(yè)面視口大谢卵浴:
var pageWidth = window.innerWidth,
pageHeight = window.innerHeight;
if (typeof pageEidth != "number") {
if (document.compatMode == "CSS1Compat") { //確定頁(yè)面是否處于標(biāo)準(zhǔn)模式
pageWidth = document.documentElement.clientEidth;
pageHeight = document.documentElement.clientHeight;
} else {
pageWidth = document.body.clientWidth;
pageHeight = document.body.clientHeight;
}
}
5.導(dǎo)航和打開窗口——window.open()
使用window.open()
方法可以導(dǎo)航到一個(gè)特定的URL扇单,也可以打開一個(gè)新的瀏覽器窗口。本方法接收4個(gè)參數(shù):
- 要加載的UTL —— (通常只傳遞第一個(gè)參數(shù))
- 窗口目標(biāo)
- 一個(gè)特性字符串
- 一個(gè)表示新頁(yè)面是否取代瀏覽器歷史記錄中當(dāng)前加載頁(yè)面的布爾值 —— (通常只在不打開新窗口的情況下使用)
5.1 彈出窗口
如果傳遞的第二個(gè)參數(shù)并不是一個(gè)已經(jīng)存在的窗口或框架奠旺,該方法就會(huì)根據(jù)第三個(gè)參數(shù)所傳的字符串創(chuàng)建一個(gè)新窗口或新標(biāo)簽頁(yè)(若第三個(gè)參數(shù)未傳值蜘澜,則打開默認(rèn)設(shè)置的新窗口)
-
opener
屬性
新建window對(duì)象有一個(gè)opener
屬性,保存著打開它的原始窗口對(duì)象响疚。將新創(chuàng)建的標(biāo)簽頁(yè)的opener
屬性設(shè)置為null
鄙信,即表示在單獨(dú)的進(jìn)程中運(yùn)行新標(biāo)簽頁(yè)
5.2 安全限制
5.3 彈出窗口屏蔽程序
6. 間歇調(diào)用和超時(shí)調(diào)用
超時(shí)調(diào)用:window對(duì)象的setTimeout()
方法,接收兩個(gè)參數(shù)
- 要執(zhí)行的代碼——不建議使用字符串,建議使用函數(shù)
- 以毫秒表示的時(shí)間
//設(shè)置超時(shí)調(diào)用
var timeoutId = setTimeout(function(){
alert("Hello world")
},1000)
//把它取消
clearTimeout(timeoutId);
間歇調(diào)用:window對(duì)象的setInterval()
方法,接收兩個(gè)參數(shù)忿晕,類似于setTimeout()
装诡。
開發(fā)環(huán)境中很少使用間歇調(diào)用,一般使用超時(shí)調(diào)用來(lái)模擬間歇調(diào)用杏糙。
7. 系統(tǒng)對(duì)話框
-
alert()
只有“確認(rèn)”按鈕 -
confirm()
有“確認(rèn)”和“取消”兩個(gè)按鈕 -
prompt()
“提示”框——用于提示用戶輸入一些文本慎王。顯示“確認(rèn)”和“取消”兩個(gè)按鈕。接收兩個(gè)參數(shù):- 要顯示給用戶的文本提示
- 文本輸入域的默認(rèn)值(可以是空字符串)