Javascript之BOM與DOM講解


一.Javascript組成

JavaScript的實現包括以下3個部分:

ECMAScript(核心)

描述了JS的語法和基本對象。

文檔對象模型 (DOM)

處理網頁內容的方法和接口

瀏覽器對象模型(BOM)

與瀏覽器交互的方法和接口

javascript 有三部分構成,ECMAScript,DOM和BOM,根據宿主(瀏覽器)的不同,具體的表現形式也不盡相同,ie和其他的瀏覽器風格迥異,IE 擴展了 BOM,加入了 ActiveXObject 類,可以通過 JavaScript 實例化 ActiveX 對象 

1. DOM 是 W3C 的標准; [所有瀏覽器公共遵守的標准]
2. BOM 是 各個瀏覽器廠商根據 DOM在各自瀏覽器上的實現;[表現為不同瀏覽器定義有差別,實現方式不同]
3. window 是 BOM 對象,而非 js 對象;javacsript是通過訪問BOM(Browser Object Model)對象來訪問、控制、修改客戶端(瀏覽器)

ECMAScript擴展知識:

① ECMAScript是一個標准,JS只是它的一個實現,其他實現包括ActionScript。

② “ECMAScript可以為不同種類的宿主環境提供核心的腳本編程能力……”,即ECMAScript不與具體的宿主環境相綁定,如JS的宿主環境是瀏覽器,AS的宿主環境是Flash。

③ECMAScript描述了以下內容:語法、類型、語句、關鍵字、保留字、運算符、對象。

 

二. DOM, DOCUMENT, BOM, WINDOW 區別


DOM 是為了操作文檔出現的 API,document 是其的一個對象;
BOM 是為了操作瀏覽器出現的 API,window 是其的一個對象。

BOM是瀏覽器對象模型,DOM是文檔對象模型,前者是對瀏覽器本身進行操作,而后者是對瀏覽器(可看成容器)內的內容進行操作

 

 

 歸BOM管的:

A區(瀏覽器的標簽頁,地址欄,搜索欄,書簽欄,窗口放大還原關閉按鈕,菜單欄等等)

B區(瀏覽器的右鍵菜單)

C區(document加載時的狀態欄,顯示http狀態碼等)

D區(滾動條scroll bar)

歸DOM管的:

E區(就是document,由web開發人員寫出來的一個文件夾,里面有index.html,CSS和JS的,部署在服務器上,我們可以通過瀏覽器的地址欄輸入URL然后回車將這個document加載到本地,瀏覽,右鍵查看源代碼等。

2.1 DOM

DOM 全稱是 Document Object Model,也就是文檔對象模型。是針對XML的基於樹的API。描述了處理網頁內容的方法和接口,是HTML和XML的API,DOM把整個頁面規划成由節點層級構成的文檔。

這個DOM定義了一個HTMLDocument和HTMLElement做為這種實現的基礎,就是說為了能以編程的方法操作這個 HTML 的內容(比如添加某些元素、修改元素的內容、刪除某些元素),我們把這個 HTML 看做一個對象樹(DOM樹),它本身和里面的所有東西比如 <div></div> 這些標簽都看做一個對象,每個對象都叫做一個節點(node),節點可以理解為 DOM 中所有 Object 的父類。

 

 

 

DOM 有什么用?就是為了操作 HTML 中的元素,比如說我們要通過 JS 把這個網頁的標題改了,直接這樣就可以了:

document.title = 'how to make love';

這個 API 使得在網頁被下載到瀏覽器之后改變網頁的內容成為可能。

2.2 document

當瀏覽器下載到一個網頁,通常是 HTML,這個 HTML 就叫 document(當然,這也是 DOM 樹中的一個 node),從上圖可以看到,document 通常是整個 DOM 樹的根節點。這個 document 包含了標題(document.title)、URL(document.URL)等屬性,可以直接在 JS 中訪問到。

在一個瀏覽器窗口中可能有多個 document,例如,通過 iframe 加載的頁面,每一個都是一個 document。

在 JS 中,可以通過 document 訪問其子節點(其實任何節點都可以),如

document.body;document.getElementById('xxx'); 

2.3 BOM

BOM 是 Browser Object Model,瀏覽器對象模型。

剛才說過 DOM 是為了操作文檔出現的接口,那 BOM 顧名思義其實就是為了控制瀏覽器的行為而出現的接口。
瀏覽器可以做什么呢?比如跳轉到另一個頁面、前進、后退等等,程序還可能需要獲取屏幕的大小之類的參數。
所以 BOM 就是為了解決這些事情出現的接口。比如我們要讓瀏覽器跳轉到另一個頁面,只需要

location.href = "http://www.xxxx.com";這個 location 就是 BOM 里的一個對象。

2.4 window

    window 也是 BOM 的一個對象,除去編程意義上的“兜底對象”之外,通過這個對象可以獲取窗口位置、確定窗口大小、彈出對話框等等。例如我要關閉當前窗口:

window.close();

DOM基本操作思維導圖

 

 

window對象思維導圖

 

 詳情:https://blog.csdn.net/qq877507054/article/details/51395830

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM