跳過導覽列

O3noBLOG

A Happy(?)Designer ~~

單篇彙整

貳月 06

addEventListener的第三個參數

W3C DOM裡用來新增觸發事件的函數叫AddEventListener,不過我一直不知道這個函數的第三個參數是要做什麼用的,總是隨便設,也沒發現差異再哪,前兩天看ppk on javascript終於看到說明了,至於很久以前就有的DOM的標準文件,我其實根本沒去找過這個參數的資訊。

這個參數叫做useCapture,是一個boolean值,就是true or false,如果送出true的話就是瀏覽器會使用Capture方式,false的話是Bubbling,只有在特定狀況下才會有影響,通常建議是false,而會有影響的情形是目標元素(target element)有祖先元素(ancestor element),而且也有同樣的事件對應函數,我想,看圖會比較清楚。

範例有兩層的div方塊

像這張圖所顯示的,我的範例有兩層div元素,而且都設定有click事件,一般來說,如果我在內層藍色的元素上click不只會觸發藍色元素的click事件,還會同時觸發紅色元素的click事件,而useCapture這個參數就是在控制這時候兩個click事件的先後順序。如果是false,那就會使用bubbling,他是從內而外的流程,所以會先執行藍色元素的click事件再執行紅色元素的click事件,如果是true,那就是capture,和bubbling相反是由外而內,會先執行紅色元素的click事件才執行藍色元素的click事件。附上兩個範例,capturebubbling,兩個檔案只有差在此一參數不同,可以發現事件的發生順序不一樣了。

那如果不同層的元素使用的useCapture不同呢?就是會先從最外層元素往目標元素尋找設定為capture的事件,到達目標元素執行目標元素的事件後,再尋原路往外尋找設定為bubbling的事件。

引用(http://othree.net/mt/mt-tb.cgi/385)

目前無人引用。

迴響(發表你的迴響)

  1. 1由 Anonymous 在 2007-07-12 21:24:54 發表:

    正解

  2. 2由 阿志 在 2007-11-07 15:10:30 發表:

    最近在學習 JavaScript
    剛好對事件處理理器 addEventListener 有些不明白
    看了你的解說
    豁然開朗

  3. 3由 Anonymous 在 2007-12-16 12:15:48 發表:

    讲解的非常明了。

  4. 4由 Anonymous 在 2007-12-16 12:16:03 發表:

    讲解的非常明了。

  5. 5由 Anonymous 在 2008-03-20 20:47:19 發表:

    很和谐

  6. 6sliuqin在 2008-04-07 17:21:15 發表:

    受益

  7. 7由 去也来来 在 2008-05-04 15:30:28 發表:

    十分感谢,讲解的太好了。

  8. 8由 过客 在 2008-06-06 14:39:25 發表:

    非常好,谢谢!

  9. 9由 Anonymous 在 2008-07-14 11:48:54 發表:

    谢谢.

發表迴響

如果欲使用OpenID,請開啟瀏覽器的JavaScript功能。

accesskey:P


其它資訊

關於本文章

addEventListener的第三個參數發表於2007-02-06,文章類別為SCRIPT,截至目前為止共有0篇文章引用此文、9篇讀者迴響,你可以為此篇文章留下你的想法,或是訂閱讀者迴響的RSS

關於本網站

本網站是O3(othree)的個人部落格,主要內容為網路標準、網頁設計,穿插些ACG心得和敗家紀錄,如果需要聯絡我請寄信到

近期文章

分類彙整

我在看什麼

訂閱本網誌

貼紙

時間がない