1. 程式人生 > >JAvaScript和DOM(文件物件模型)和BOM(瀏覽器物件模型)

JAvaScript和DOM(文件物件模型)和BOM(瀏覽器物件模型)

DOM是針對XML但經過擴充套件用於HTML的應用程式程式設計介面

可以這樣理解:DOM可以把HTML頁面中的元素轉成一個物件樹,並且DOM定義了其他語言如何通過其規定的方式來訪問HTML中的元素,以及修改HTML頁面中的元素
換言之,HTML DOM 是關於如何獲取、修改、新增或刪除 HTML 元素的標準
在 HTML DOM 中,所有事物都是節點。DOM 是被視為節點樹的 HTML
可以這麼說:DOM是連結HTML和javaScript語言之間的橋樑,沒有DOMjavaScript無法訪問HTML元素,也就無法建立動態HTML頁面

javaScript 和DOM的關係

要改變頁面的某個東西,JavaScript 就需要獲得對 HTML 文件中所有元素進行訪問的入口。這個入口,連同對 HTML 元素進行新增、移動、改變或移除的方法和屬性,都是通過文件物件模型來獲得的(DOM)

DOM把整個頁面對映成一個多層節點結構,HTML頁面中的每一個組成部分都是某種型別的節點,這些節點也包含這不同型別的資料
當網頁被載入時,瀏覽器會建立頁面的文件物件模型(Document Object Model)
HTML DOM 模型被構造為物件的樹(就是HTML各個元素構成的樹狀結構)
HTML DOM節點樹

DOM 節點
根據 W3C 的 HTML DOM 標準,HTML 文件中的所有內容都是節點:
整個文件是一個文件節點
每個 HTML 元素是元素節點
HTML 元素內的文字是文字節點
每個 HTML 屬性是屬性節點
註釋是註釋節點
注意:建立錯誤是以為元素節點包含文字,實際上文字節點是元素節點的子節點

通過可程式設計的DOM物件模型,JavaScript 獲得了足夠的能力來建立動態的 HTML
JavaScript 能夠改變頁面中的所有 HTML 元素
JavaScript 能夠改變頁面中的所有 HTML 屬性
JavaScript 能夠改變頁面中的所有 CSS 樣式
JavaScript 能夠對頁面中的所有事件做出反應

一般javaScript建立動態HTML頁面的方式是:
在符合某種條件下修改HTML中某些DOM物件的屬性、樣式等
而修改的流程一般是:通過ID、標籤名、類名等方式找到對應的元素物件,然後修改其屬性、樣式等

BOM(瀏覽器物件模型)

瀏覽器物件模型 (BOM) 使 JavaScript 有能力與瀏覽器“對話”:


DOM是javaScript和HTML頁面進行對話的介面,javaScript可以通過DOM介面對HTML頁面中的各個元素進行修改
BOM就是javaScript和瀏覽器物件進行對話的介面,我們真正在使用的時候瀏覽器是五花八門的,那如果想要使你的javaScript程式碼可以在不同的瀏覽器上顯示相同的行為,那就必須定義一個javaScript和瀏覽器物件對話的介面,這個介面就是BOM
而BOM中定義的物件就是Window,所有瀏覽器都支援 window 物件。它表示瀏覽器視窗。也就是說你在javaScript中對window物件的操作,不管你在任何瀏覽器中都會執行相同的操作(因為所有的瀏覽器都支援window物件的相同的方法和屬性)
所有 JavaScript 全域性物件、函式以及變數均自動成為 window 物件的成員。
全域性變數是 window 物件的屬性。全域性函式是 window 物件的方法。甚至 HTML DOM 的 document 也是 window 物件的屬性之一
window物件有很多屬性和方法:而且window許多屬性也是一個物件
http://www.w3school.com.cn/js/js_window.asp
例如:window.screen物件:表示瀏覽器螢幕物件
window.location 物件用於獲得當前頁面的地址 (URL),並把瀏覽器重定向到新的頁面。
window.history 物件包含瀏覽器的歷史。
window.navigator 物件包含有關訪問者瀏覽器的資訊。
document.cookie 用來識別使用者,cookie 是儲存於訪問者的計算機中的變數。每當同一臺計算機通過瀏覽器請求某個頁面時,就會發送這個 cookie。你可以使用 JavaScript 來建立和取回 cookie 的值
(類似於頁面快取的概念:當你使用瀏覽器訪問一個頁面的時候,會傳遞這個cookie物件,當你首次訪問的時候cookie為null,如果此時你將一些值儲存在cookie中,當你再次訪問的時候cookie就包含了你儲存進去的值)