JAVAScript中DOM與BOM的差別分析

JAVAScript 有三部分構成,ECMAScriptDOMBOM,根據瀏覽器的不一樣,具體的表現形式也不盡相同。咱們今天來談一談DOM和BOM這倆者之間的差別。html

用百科上的來講:java

1. DOM是 W3C 的標準; [全部瀏覽器公共遵照的標準]數組

2. BOM 是 各個瀏覽器廠商根據 DOM在各自瀏覽器上的實現;[表現爲不一樣瀏覽器定義有差異,實現方式不一樣]瀏覽器

3. window 是 BOM 對象,而非 js 對象;緩存

DOM(文檔對象模型)是 HTML 和 XML 的應用程序接口(API)。服務器

BOM 主要處理瀏覽器窗口和框架,不過一般瀏覽器特定的 JavaScript 擴展都被看作 BOM 的一部分。而這些擴展則包括:cookie

<1>彈出新的瀏覽器窗口
<2>移動、關閉瀏覽器窗口以及調整窗口大小
<3>提供 Web 瀏覽器詳細信息的定位對象
<4>提供用戶屏幕分辨率詳細信息的屏幕對象
<5>對 cookie 的支持
<6>IE 擴展了 BOM,加入了 ActiveXObject 類,能夠經過 JavaScript 實例化 ActiveX 對象

javacsript是經過訪問BOM(Browser Object Model)對象來訪問、控制、修改客戶端(瀏覽器),因爲BOMwindow包含了document,window對象的屬性和方法是直接可使用並且被感知的,所以能夠直接使用window對象的document屬性,經過document屬性就能夠訪問、檢索、修改XHTML文檔內容與結構。由於document對象又是DOM(Document Object Model)模型的根節點。能夠說,BOM包含了DOM(對象),瀏覽器提供出來給予訪問的是BOM對象,從BOM對象再訪問到DOM對象,從而js能夠操做瀏覽器以及瀏覽器讀取到的文檔。其中
DOM包含:windowapp

Window對象包含屬性:document、location、navigator、screen、history、frames
Document根節點包含子節點:forms、location、anchors、images、links

window.document已然能夠看出,DOM的最根本的對象是BOM的window對象的子對象。而他們以前的最大區別:DOM描述了處理網頁內容的方法和接口,BOM描述了與瀏覽器進行交互的方法和接口。框架

首先咱們來仔細瞭解一下DOM函數

在HTML中DOM的節點層次爲:

DOM操做creatElement(element)建立一個新的元素節點creatTextNode()建立一個包含給定文本的新文本節點appendChild()指定節點的最後一個節點列表後添加一個新的子節insertBefore()將一個給定節點插入到一個給定元素節點的給定子節點的前面removeChild()從一個給定元素中刪除子節點replaceChild()把一個給定父元素裏的一個子節點替換爲另一個節點,DOM經過建立樹來表示文檔,描述了處理網頁內容的方法和接口,從而使開發者對文檔的內容和結構具備空前的控制力,用DOM API能夠輕鬆地刪除、添加和替換節點。

訪問節點的方法以下:

var oHtml = document.documentElement;//返回存在於 XML 以及 HTML 文檔中的文檔根節點oHtml包含了一個表示<html />的HTMLElement對象
document.body //是對 HTML 頁面的特殊擴展,提供了對 <body> 標籤的直接訪問
document.getElementById("ID") //經過指定的 ID 來返回元素,getElementById() 沒法工做在 XML 中,IE6還會返回name爲指定ID的元素
document.getElementByName("name")//獲取全部name特性等於指定值的元素,不過在IE6和Opera7.5上還會返回id爲給定名稱的元素且僅檢查<input/>和<img/>
var x=document.getElementsByTagName("p"); //使用指定的標籤名返回全部的元素列表NodeList,索引號從0開始。當參數是一個星號的時候,IE6並不返回全部的元素,必須用document.all來替代

獲取到節點以後就要對它進行操做,操做的方法咱們用事件來實現,事件類型有:

鼠標事件:click、dbclick、mousedown、mouseup、mouseover、mouseout、mousemove 
鍵盤事件:keydown、keypress、keyup 
HTML事件:load、unload、abort、error、select、change、submit、reset、resize、scroll、focus、blur

 有人常常會把OUTHTML和innerText、innerHTML混淆開來,其實它們很好區分:

這樣就能夠很清晰的看懂他們的劃分。

DOM基本操做思惟導圖以下:

下面咱們來了解一下BOM

BOM的核心是window,而window對象又具備雙重角色,它既是經過js訪問瀏覽器窗口的一個接口,又是一個Global(全局)對象。這意味着在網頁中定義的任何對象,變量和函數,都以window做爲其global對象。

window.close(); //關閉窗口 
 
window.alert("message"); //彈出一個具備OK按鈕的系統消息框,顯示指定的文本 
 
window.confirm("Are you sure?"); //彈出一個具備OK和Cancel按鈕的詢問對話框,返回一個布爾值 
 
window.prompt("What's your name?", "Default"); //提示用戶輸入信息,接受兩個參數,即要顯示給用戶的文本和文本框中的默認值,將文本框中的值做爲函數值返回 
 
window.status //可使狀態欄的文本暫時改變 
 
window.defaultStatus //默認的狀態欄信息,可在用戶離開當前頁面前一直改變文本 
 
window.setTimeout("alert('xxx')", 1000); //設置在指定的毫秒數後執行指定的代碼,接受2個參數,要執行的代碼和等待的毫秒數 
 
window.clearTimeout("ID"); //取消還未執行的暫停,將暫停ID傳遞給它 
 
window.setInterval(function, 1000); //無限次地每隔指定的時間段重複一次指定的代碼,參數同setTimeout()同樣 
 
window.clearInterval("ID"); //取消時間間隔,將間隔ID傳遞給它 
 
window.history.go(-1); //訪問瀏覽器窗口的歷史,負數爲後退,正數爲前進 
 
window.history.back(); //同上 
 
window.history.forward(); //同上 
 
window.history.length //能夠查看歷史中的頁面數  

document對象

document對象:其實是window對象的屬性,document == window.document爲true,是惟一一個既屬於BOM又屬於DOM的對象 
 
document.lastModified //獲取最後一次修改頁面的日期的字符串表示 
 
document.referrer //用於跟蹤用戶從哪裏連接過來的 
 
document.title //獲取當前頁面的標題,可讀寫 
 
document.URL //獲取當前頁面的URL,可讀寫 
 
document.anchors[0]或document.anchors["anchName"] //訪問頁面中全部的錨 
 
document.forms[0]或document.forms["formName"] //訪問頁面中全部的表單 
 
document.images[0]或document.images["imgName"] // 訪問頁面中全部的圖像 
 
document.links [0]或document.links["linkName"] //訪問頁面中全部的連接 
 
document.applets [0]或document.applets["appletName"] //訪問頁面中全部的Applet 
 
document.embeds [0]或document.embeds["embedName"] //訪問頁面中全部的嵌入式對象 
 
document.write(); 或document.writeln(); //將字符串插入到調用它們的位置 

location對象

location對象:表示載入窗口的URL,也可用window.location引用它 
 
location.href //當前載入頁面的完整URL,如http://www.somewhere.com/pictures/index.htm 
 
location.portocol //URL中使用的協議,即雙斜槓以前的部分,如http 
 
location.host //服務器的名字,如www.wrox.com 
 
location.hostname //一般等於host,有時會省略前面的www 
 
location.port //URL聲明的請求的端口,默認狀況下,大多數URL沒有端口信息,如8080 
 
location.pathname //URL中主機名後的部分,如/pictures/index.htm 
 
location.search //執行GET請求的URL中的問號後的部分,又稱查詢字符串,如?param=xxxx 
 
location.hash //若是URL包含#,返回該符號以後的內容,如#anchor1 
 
location.assign("http:www.baidu.com"); //同location.href,新地址都會被加到瀏覽器的歷史棧中 
 
location.replace("http:www.baidu.com"); //同assign(),但新地址不會被加到瀏覽器的歷史棧中,不能經過back和forward訪問 
 
location.reload(true | false); //從新載入當前頁面,爲false時從瀏覽器緩存中重載,爲true時從服務器端重載,默認爲false 

 navigator對象

navigator對象:包含大量有關Web瀏覽器的信息,在檢測瀏覽器及操做系統上很是有用,也可用window.navigator引用它 
 
navigator.appCodeName //瀏覽器代碼名的字符串表示 
 
navigator.appName //官方瀏覽器名的字符串表示 
 
navigator.appVersion //瀏覽器版本信息的字符串表示 
 
navigator.cookieEnabled //若是啓用cookie返回true,不然返回false 
 
navigator.javaEnabled //若是啓用java返回true,不然返回false 
 
navigator.platform //瀏覽器所在計算機平臺的字符串表示 
 
navigator.plugins //安裝在瀏覽器中的插件數組 
 
navigator.taintEnabled //若是啓用了數據污點返回true,不然返回false 
 
navigator.userAgent //用戶代理頭的字符串表示   

screen對象

screen對象:用於獲取某些關於用戶屏幕的信息,也可用window.screen引用它 
 
screen.width/height //屏幕的寬度與高度,以像素計 
 
screen.availWidth/availHeight //窗口可使用的屏幕的寬度和高度,以像素計 
 
screen.colorDepth //用戶表示顏色的位數,大多數系統採用32位 
 
window.moveTo(0, 0); 
 
window.resizeTo(screen.availWidth, screen.availHeight); //填充用戶的屏幕

 window對象方法則有如下這幾種:

BOM和DOM的結構關係示意圖:

window對象思惟導圖:

以上就是我所理解的DOM與BOM這兩者的所指方向,望你們有任何寶貴的經驗均可以多多補充,你們吃好喝好,回見。

相關文章
相關標籤/搜索