Q1:什么是 DOM?
DOM 是 W3C(萬維網(wǎng)聯(lián)盟)的標(biāo)準(zhǔn)。
DOM 定義了訪問 HTML 和 XML 文檔的標(biāo)準(zhǔn):
W3C DOM 標(biāo)準(zhǔn)被分為 3 個(gè)不同的部分:
核心 DOM - 針對(duì)任何結(jié)構(gòu)化文檔的標(biāo)準(zhǔn)模型
XML DOM - 針對(duì) XML 文檔的標(biāo)準(zhǔn)模型
HTML DOM - 針對(duì) HTML 文檔的標(biāo)準(zhǔn)模型
Q2:什么是 XML DOM?
XML DOM 定義了所有 XML 元素的對(duì)象和屬性,以及訪問它們的方法。
Q3:什么是 HTML DOM?
HTML DOM 是:
HTML 的標(biāo)準(zhǔn)對(duì)象模型
HTML 的標(biāo)準(zhǔn)編程接口
HTML DOM 定義了所有 HTML 元素的對(duì)象和屬性,以及訪問它們的方法。
換言之,HTML DOM 是關(guān)于如何獲取、修改、添加或刪除 HTML 元素的標(biāo)準(zhǔn)。
Q4:DOM標(biāo)準(zhǔn)與IE的html事件模型區(qū)別
先有事件,事件是在瀏覽器內(nèi)部自動(dòng)產(chǎn)生的,當(dāng)有時(shí)間發(fā)生時(shí),html元素會(huì)向外界發(fā)出各種事件。
DOM事件流,當(dāng)一個(gè)html元素產(chǎn)生一個(gè)事件時(shí),該事件會(huì)在元素借點(diǎn)與根節(jié)點(diǎn)之間的路徑傳播,路徑所經(jīng)過的節(jié)點(diǎn)都會(huì)收到該事件,這個(gè)傳播過程可稱為DOM事件流。
主流瀏覽器的事件模型:
1)冒泡型事件
從DOM樹型結(jié)構(gòu)上理解,就是事件由葉子結(jié)點(diǎn)沿祖先結(jié)點(diǎn)一直向上傳遞直到根結(jié)點(diǎn);從瀏覽器界面視圖HTML元素排列層次上理解就是事件由具有從屬關(guān)系的最確定的目標(biāo)元素一直傳遞到最不確定的目標(biāo)元素.
2)捕獲型事件
由DOM樹最頂層元素一直到最精確的元素
3)DOM標(biāo)準(zhǔn)事件模型
DOM標(biāo)準(zhǔn)支持捕獲型與冒泡型,可以說是它們兩者的結(jié)合體。它可以在一個(gè)DOM元素上綁定多個(gè)事件處理器,并且在處理函數(shù)內(nèi)部,this關(guān)鍵字仍然指向被綁定的DOM元素,另外處理函數(shù)參數(shù)列表的第一個(gè)位置傳遞事件event對(duì)象。
首先是捕獲式傳遞事件,接著是冒泡式傳遞,所以,如果一個(gè)處理函數(shù)既注冊(cè)了捕獲型事件的監(jiān)聽,又注冊(cè)冒泡型事件監(jiān)聽,那么在DOM事件模型中它就會(huì)被調(diào)用兩次。
Q5:DOM事件響應(yīng)綁定
1)綁定單個(gè)監(jiān)聽
element.attachEvent("OnClick", observer)
element.detachEvent("OnClick", observer)
2)綁定多個(gè)監(jiān)聽
element.AddEventListener("Click", observer, useCapture)
element.RemoveEventListener("Click", observer, useCapture)
第三個(gè)參賽是指定在冒泡節(jié)點(diǎn)還是控制階段調(diào)用