BOM對(duì)象方法
瀏覽器對(duì)象模型
window對(duì)象
表示瀏覽器的一個(gè)實(shí)例,它既是通過JS訪問瀏覽器窗口的一個(gè)接口,也是一個(gè)Global對(duì)象
全局作用域
所有在全局作用域中生命的變量和函數(shù)都會(huì)映射成window對(duì)象的屬性和方法
不過通過window對(duì)象定義的屬性可以用delete刪除,而全局變量不可以,因?yàn)橛胿ar映射的window屬性有一個(gè)Configurable屬性,為false,不可用delete绰姻。
當(dāng)我們?cè)L問沒有定義的全局變量會(huì)報(bào)錯(cuò),但是訪問沒有定義的window對(duì)象屬性不會(huì)瑞眼,會(huì)返回undefined龙宏,因?yàn)檫@就是一次屬性查詢罷了
窗口關(guān)系
frame就是框架, 一個(gè)frame就有屬于自己的一個(gè)window對(duì)象
可以通過window.frames[number],window.frames[name]的方式獲得框架的引用伤疙,但有更好的辦法引用框架
top對(duì)象永遠(yuǎn)只向最外層框架银酗,也就是瀏覽器窗口。除非top對(duì)象使用window.open()打開徒像,否則它的name是空值
window對(duì)象指向各自所屬的框架實(shí)例
parent對(duì)象指向當(dāng)前框架的上層框架黍特,沒有框架時(shí),和top含義一致锯蛀,此時(shí)灭衷,top、window旁涤、parent三者一致
self對(duì)象指向window翔曲,是為了與top迫像、parent對(duì)象對(duì)應(yīng)起來,沒什么特殊之處
每個(gè)框架中定義的全局變量會(huì)自動(dòng)變成window對(duì)象的屬性瞳遍,但每個(gè)框架有自己的構(gòu)造函數(shù)闻妓,所以父框架的屬性和子框架的同名屬性對(duì)象用instanceof結(jié)果是不同。
窗口位置
screenLeft:窗口相對(duì)于屏幕的左邊
screenTop:窗口相對(duì)于屏幕的上面
moveTo():接受新位置的x掠械、y參數(shù)
moveBy():接受水平和垂直方向上移動(dòng)的像素?cái)?shù)
窗口大小
innerWidth
innerHeight
outerWidth
outerHeight
resizeTo():接受瀏覽器窗口的新寬度和新高度
resizeBy():接受新窗口和原窗口的高度之差
導(dǎo)航和打開窗口
window.open()既可以導(dǎo)航到一個(gè)URL由缆,也可以打開一個(gè)新窗口
window.open(URL,目標(biāo)窗口猾蒂,特性字符串均唉,新頁(yè)面是否要在歷史記錄中取代當(dāng)前頁(yè)面)
如果目標(biāo)窗口不存在就會(huì)新建一個(gè)來加載,存在就直接加載
如果沒寫特性字符串肚菠,就會(huì)按默認(rèn)設(shè)置去加載
window.open()返回的是新窗口的引用舔箭,我們可以對(duì)新窗口實(shí)現(xiàn)完全控制,比如調(diào)整大小案糙、移動(dòng)位置限嫌、關(guān)閉......
close():關(guān)閉新打開的窗口靴庆,關(guān)閉之后时捌,這個(gè)引用對(duì)象就會(huì)只剩下一個(gè)為true的closed屬性
opener:保存打開新窗口的原始窗口,不過原始窗口倒沒有指向新窗口的指針炉抒,把它設(shè)為null奢讨,即可切斷與原始窗口的聯(lián)系
如果打開的窗口被瀏覽器內(nèi)置的屏蔽程序屏蔽,window.open()會(huì)返回null
如果被瀏覽器擴(kuò)展或其他程序阻止焰薄,window.open()會(huì)拋出異常拿诸,所以這部分最好寫在try/catch里面
定時(shí)調(diào)用與周期調(diào)用
setTimeout(最好是函數(shù),時(shí)間):在指定時(shí)間之后執(zhí)行代碼塞茅,返回一個(gè)調(diào)用ID
setInterval(最好是函數(shù)亩码,時(shí)間):周期性的執(zhí)行代碼,返回一個(gè)調(diào)用ID
clearTimeout(調(diào)用ID):在定時(shí)調(diào)用執(zhí)行前取消執(zhí)行
clearInterval(調(diào)用ID):取消周期性執(zhí)行
這個(gè)不一定準(zhǔn)時(shí)野瘦,因?yàn)镴S是單線程執(zhí)行的
定時(shí)調(diào)用可以模擬周期調(diào)用描沟,函數(shù)里面寫定時(shí)調(diào)用自己。
盡量不要寫周期調(diào)用鞭光,就算寫也盡量用定時(shí)調(diào)用去模擬吏廉。
系統(tǒng)對(duì)話框
alert 一個(gè)確認(rèn)按鈕的文本框
confirm 兩個(gè)按鈕(是或否)的文本框,會(huì)根據(jù)選擇返回boolean
prompt 帶輸入行的兩個(gè)按鈕文本框惰许,返回輸入結(jié)果或者null
location對(duì)象
window的重要屬性席覆,也是document對(duì)象的屬性之一。它提供了當(dāng)前窗口加載文檔的有關(guān)信息和將URL解析汹买。
search:返回URL從問號(hào)到結(jié)尾的所有內(nèi)容的字符串佩伤,我們要手動(dòng)解析
assign(URL):立即打開URL聊倔,并在歷史記錄中記錄,href和location的直接賦值行為會(huì)隱式調(diào)用它
href:當(dāng)前窗口的完整URL
replace(URL):新URL會(huì)在歷史記錄中取代棧頂記錄
reload(boolean):true為從服務(wù)器重新加載生巡,false為從瀏覽器緩存重新加載方库,默認(rèn)為false
navigator對(duì)象
window的屬性之一,目前只是用來識(shí)別客戶端瀏覽器
插件檢測(cè)
插件都保存在navigator對(duì)象的plugins對(duì)象數(shù)組里
插件對(duì)象:{
name:插件名字障斋,
description:插件描述
filename:插件文件名
length:插件處理的MIME類型數(shù)量
}
與其寫個(gè)通用檢測(cè)方法纵潦,不如針對(duì)某一種插件去檢測(cè)存不存在
注冊(cè)處理程序
針對(duì)特定在線程序的處理方式
registerContentHandler(要處理的MIME類型,接受的URL垃环,應(yīng)用程序名)
registerProtocolHandler(要處理的協(xié)議邀层,處理的URL,應(yīng)用程序名)
screen對(duì)象
用處不大
表明客戶端能力遂庄,比如顯示器信息
history對(duì)象
保存歷史記錄
go():在歷史記錄中任意跳轉(zhuǎn)寥院,前進(jìn)正數(shù),后退負(fù)數(shù)涛目,也可以指定URL跳轉(zhuǎn)
length:保存歷史記錄數(shù)量