第四章 瀏覽器對象模(BOM)總結前端
本章主要講解了瀏覽器對象模型BOM的基本概念,以及window、document、location、navigator和screen五個對象的經常使用屬性及方法。node
其中window對象是BOM的核心,咱們能夠經過window的moveBy()、resizeTo()等方法移動、調節瀏覽器窗口位置、大小。但因爲缺少相應標準,不一樣的瀏覽器在使用該方法時獲得的結果並不同,例如,若使用moveBy(100,100)移動窗口,只有IE下能獲得正確的結果,Chrome和FF卻獲得不一樣的結果或者有些狀況下甚至沒有任何效果。值得一提的是,IE提供了window.screenLeft和window.screenTop對象來判斷瀏覽器窗口位置,在IE8中,這兩個對象獲取的是瀏覽器窗口視口左上角的位置(不包括頂部菜單欄),Chrome和FF也支持此屬性,但所獲取的是整個瀏覽器左上角的位置,不過在較新的IE11中,所獲取的位置已經與Chrome和FireFox達成了一致。而且window對象的特性字符串也只在IE下可用,例如scrollable、resizable等,Chrome和FF根本不支持此屬性。瀏覽器
Window對象下還有一個opener屬性,用於新窗口對打開它的父窗口的引用,可是此屬性在IE8下並不支持。學習
Window對象下咱們用到較多的兩個方法即是時間暫停setTimeout()和時間間隔setInterval()兩個方法,網頁上的廣告圖片輪播即可以它們來實現。spa
本章中另一個重要的對象即是document。它是惟一一個既屬於BOM又屬於DOM的對象。較爲有意思的是write()方法實際上是屬於BOM下的document的一個方法,這裏也就產生了一個問題,如何區分document的方法和屬性到底屬於BOM仍是DOM呢?書上列舉了document的forms和images集合,但經過document.forms[0]得到的表單的nodeType值爲1,分明是文檔結構模型中的一個元素節點,這二者之間到底有沒有一個明確的區分界限呢?orm
BOM中另外三個對象location、navigator和screen彷佛在平常應用中至關較少。但其實它們仍是有用武之地的,例如,在本次JS打飛機遊戲中,我便經過給「從新開始」按鈕添加一個location.reload()方法來從新加載了頁面。而一樣因爲缺少標準,navigator對象的屬性和方法就造成了一片混亂。Screen對象下的colorDepth方法在IE8下獲得的是顏色位數是32位,而Chrome和FF下則是24位,但在IE11下,它也是24位了,這樣的改變對於咱們前端開發人員而言,無疑是一個較大的福音。 對象
技術的提高不能只靠保守本身的固有資本,樂於分享、善於學習,才能使咱們收穫更多,連微軟均可以改變,咱們爲何不能呢?遊戲