JS事件流

來源:互聯網
上載者:User

標籤: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個機會再目標對象上面操作事件。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.