W3C标準是網際網路聯盟,
其他的可以參考網際網路版本的更新内容
一、W3C标準
二、W3C DOM事件
三、冒泡事件
四、捕獲事件
五、對比分析
其實網頁是由三分部組成:1、結構(structure),2、表現(prentation),3、行為(behavior)
對應的标準也分為三部分:1、結構化标準語言,主要包括xml和xhtml;2、表現标準語言,主要包括css;3、行為标準語言主要包括對象模型(W3C DOM)和ECMAScript。這些标準大部分由W3C起草和釋出,也有一些是其他标準組織制訂的标準,比如ECMA(European Computer Manufacturers Association)的ECMAScript标準。
1、結構化标準語言,主要包含可擴充标記語言(XML)和可擴充超文本标記語言(XHTML)。
xml設計之初是為了補充html的,但是随着xml滿足網絡資訊釋出的需要,逐漸應用在資料的轉換和描述上。xml資料轉換功能十分強大,但是在面對成千上萬個站點資訊直接使用xml還不行,是以引入XHTML,目的是為了把html向xml過渡。
2、表現标準語言,主要是包含css樣式。主流浏覽器正在逐漸支援,程式員也開始利用CSS3代替以往冗長的舊代碼。使用css和xhtml是為了讓把結構和樣式進行分離,便于代碼的維護。
3、行為标準語言,主要包好對象模型(W3C DOM)和ECMAScript。DOM是一種與浏覽器,平台,語言的接口。解決了設計師和web開發者提供一個标準,讓他們通路站點中的資料,腳本,表現層對象。ECMAScript是ECMA(European Computer Manufacturers Association)制定的标準腳本語言(JAVAScript)。現推薦遵循的是ECMAScript 262
二、冒泡事件模型
什麼是冒泡事件,在面試中面試官經常會問你相關的一些前端的開發基本功,現在自己總結一下,
答:冒泡事件就是從最精确的目标(target)到最不精确的目标進行順序觸發。
三、事件捕獲模型
什麼是事件捕獲?
答:事件捕獲是從最不精确的目标到最精确的目标進行順序觸發。
四、W3C DOM對象模型
什麼是DOM對象模型?
答:DOM對象模型是包含了“冒泡事件“和“事件捕獲”這兩個事件模型。兩種事件流會觸及所有的對象,從document開始,到document結束。
五、 對比分析:
1、支援W3C标準的浏覽器的給元素添加事件的方法,使用addeventListener函數,使用樣例addEventListener(event,fn,useCapture)來設定事件是在冒泡時執行還是在事件捕獲時執行。第三個參數使用布爾型,true或者false來表示;
使用true,意思就是事件捕獲
使用false,意思就是冒泡事件
2、不支援W3C标準的浏覽器(IE)給元素添加事件方法,使用attachevent函數,使用樣例attachevent(event,fn),預設的是false,起到了相容浏覽器效果,也就是說,IE浏覽器隻支援事件冒泡。
看這張圖就很清楚了事件捕獲和冒泡原型。
3、事件捕獲階段:事件從最上一級的标簽開始查找,直到捕獲事件目标
事件冒泡階段:事件從事件目标開始,往上冒泡直到頁面的最上一級标簽
4、舉一個例子
<div>
<p>點我看效果</p>
</div>
這兩個元素都綁定了click事件,如果使用者點選了p元素,他在div和p元素上都觸碰了click事件,那麼先執行哪一個事件(事件處理順序)?
事件捕獲
當你使用事件捕獲時,父級元素先觸發,子級元素後觸發,也就是說div先觸發,p後觸發。
事件冒泡
當你使用事件冒泡時,子級元素先觸發,父級元素後出發,也就是說p先觸發,div後觸發。
W3C模型
在W3C模型中,任何事件發生,都是從頂級元素開始進行事件捕獲,直到事件到達事件源元素。然後,再從事件源元素往上進行事件冒泡,直到到達document。采用的方法是addeventListener函數,
ele.addEventListener('click',doSomething2,true)
true=捕獲
false=冒泡
傳統的綁定事件方式
ele.onclick = doSomething2
這種綁定方式,采用的是冒泡事件
IE浏覽器
IE隻支援事件冒泡,不支援事件捕獲,不支援addeventListener函數,她提供了另外一個函數attachevent。
ele.attachEvent("onclick", doSomething2);
文中有錯誤的地方希望指出,共同進步