標籤:html htm window type div amp
事件流描述的是從頁面中接收事件的順序。IE和Netscape的Team Dev提出完全相反的事件流概念。IE的事件流是事件冒泡流,而Netscape的事件流是事件捕獲。
(1)事件冒泡
事件開始由最具體的元素(文檔中嵌套層次最深的那個節點)接收,然後逐級向上傳播到較為不具體的節點。
<!DOCTYPE html>
<html>
<head>
<title>example</title>
</head>
<body>
<div id="myDiv">click me</div>
</body>
</html>
如果你單擊了頁面中的DIV元素,那個 click事件會按照如下順序傳播:
DIV -> BODY -> HTML -> DOCUMENT
所有瀏覽器都支援事件冒泡,但在具體實現上還有一些差別。
(2)事件捕獲
思想:不太具體的節點應該更早接收到事件,而最具體的節點應該最後接收到事件。用意在於在事件到達預定目標之前捕獲它。仍以上為例,
單擊DIV元素,觸發CLICK事件順序:
document -> html -> body -> div
IE9及各瀏覽器都支援,儘管“DOM2級事件”規範要求事件應該從document對象開始傳播,但這些瀏覽器從window對象開始捕獲事件的。
(3)DOM事件流
“DOM2級事件”規定的事件流包括3個階段:事件捕獲階段、處於目標階段、事件冒泡階段。
仍以上面為例,單擊DIV元素,觸發事件順序:
捕獲階段:document -> html ->body
目標階段:事件在DIV上發生
冒泡階段:事件處理中,DIV->BODY->HTML->DOCUMENT
實際的目標(DIV)在捕獲階段不會接收到事件。目標階段,事件在DIV上發生,在事件處理中被看成冒泡階段的一部分。然後冒泡階段發生,事件又被傳播迴文檔。
IE9及各瀏覽器,都會在捕獲階段觸發事件對象上的事件。結果,有2個機會再目標對象上面操作事件。