日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

addListener添加事件监听器,第三个参数useCapture (Boolean) 的作用

發(fā)布時(shí)間:2025/3/20 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 addListener添加事件监听器,第三个参数useCapture (Boolean) 的作用 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

addEventListener 有三個(gè)參數(shù):第一個(gè)參數(shù)表示事件名稱(不含 on,如 "click");第二個(gè)參數(shù)表示要接收事件處理的函數(shù);第三個(gè)參數(shù)為 useCapture,本文就講解它。

<div id="outDiv"> <div id="middleDiv"> <div id="inDiv">請(qǐng)?jiān)诖它c(diǎn)擊鼠標(biāo)。</div> </div> </div><div id="info"></div> var outDiv = document.getElementById("outDiv"); var middleDiv = document.getElementById("middleDiv"); var inDiv = document.getElementById("inDiv"); var info = document.getElementById("info");outDiv.addEventListener("click", function () { info.innerHTML += "outDiv" + "<br>"; }, false); middleDiv.addEventListener("click", function () { info.innerHTML += "middleDiv" + "<br>"; }, false); inDiv.addEventListener("click", function () { info.innerHTML += "inDiv" + "<br>"; }, false);

上述是我們測(cè)試的代碼,根據(jù) info 的顯示來確定觸發(fā)的順序,有三個(gè) addEventListener,而 useCapture 可選值為 true 和 false,所以 2*2*2,可以得出 8 段不同的程序。

全為 false 時(shí),觸發(fā)順序?yàn)?#xff1a;inDiv、middleDiv、outDiv;
全為 true 時(shí),觸發(fā)順序?yàn)?#xff1a;outDiv、middleDiv、inDiv;
outDiv 為 true,其他為 false 時(shí),觸發(fā)順序?yàn)?#xff1a;outDiv、inDiv、middleDiv;
middleDiv 為 true,其他為 false 時(shí),觸發(fā)順序?yàn)?#xff1a;middleDiv、inDiv、outDiv;
……
最終得出如下結(jié)論:

true 的觸發(fā)順序總是在 false 之前;
如果多個(gè)均為 true,則外層的觸發(fā)先于內(nèi)層;
如果多個(gè)均為 false,則內(nèi)層的觸發(fā)先于外層。

?

?

?

?

2009-05-05 上午 10:18
http://www.haishabei.net/article.asp?id=117
public override function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void

?

語言版本 : ActionScript 3.0
Player 版本 : Flash Player 9

?

使用 EventDispatcher 對(duì)象注冊(cè)事件偵聽器對(duì)象,以使偵聽器能夠接收事件通知。 可以為特定類型的事件、階段和優(yōu)先級(jí)在顯示列表的所有節(jié)點(diǎn)上注冊(cè)事件偵聽器。
成功注冊(cè)一個(gè)事件偵聽器后,無法通過額外調(diào)用 addEventListener() 來更改其優(yōu)先級(jí)。 要更改偵聽器的優(yōu)先級(jí),必須首先調(diào)用 removeListener()。 然后,可以使用新的優(yōu)先級(jí)再次注冊(cè)該偵聽器。

?

請(qǐng)記住,注冊(cè)該偵聽器后,如果繼續(xù)調(diào)用具有不同 type 或 useCapture 值的 addEventListener(),則會(huì)創(chuàng)建單獨(dú)的偵聽器注冊(cè)。 例如,如果首先注冊(cè) useCapture 設(shè)置為 true 的偵聽器,則該偵聽器只在捕獲階段進(jìn)行偵聽。 如果使用同一個(gè)偵聽器對(duì)象再次調(diào)用 addEventListener(),并將 useCapture 設(shè)置為 false,那么便會(huì)擁有兩個(gè)單獨(dú)的偵聽器:一個(gè)在捕獲階段進(jìn)行偵聽,另一個(gè)在目標(biāo)和冒泡階段進(jìn)行偵聽。

?

不能只為目標(biāo)階段或冒泡階段注冊(cè)事件偵聽器。 這些階段在注冊(cè)期間是成對(duì)出現(xiàn)的,因?yàn)槊芭蓦A段只適用于目標(biāo)節(jié)點(diǎn)的始祖。

?

如果不再需要某個(gè)事件偵聽器,可調(diào)用 removeEventListener() 刪除它,否則會(huì)產(chǎn)生內(nèi)存問題。 由于垃圾回收器不會(huì)刪除仍包含引用的對(duì)象,因此不會(huì)從內(nèi)存中自動(dòng)刪除使用已注冊(cè)事件偵聽器的對(duì)象。

?

復(fù)制 EventDispatcher 實(shí)例時(shí)并不復(fù)制其中附加的事件偵聽器。 (如果新近創(chuàng)建的節(jié)點(diǎn)需要一個(gè)事件偵聽器,必須在創(chuàng)建該節(jié)點(diǎn)后附加該偵聽器)。 但是,如果移動(dòng) EventDispatcher 實(shí)例,則其中附加的事件偵聽器也會(huì)隨之移動(dòng)。

?

如果在正在處理事件的節(jié)點(diǎn)上注冊(cè)事件偵聽器,則不會(huì)在當(dāng)前階段觸發(fā)事件偵聽器,但會(huì)在事件流的稍后階段觸發(fā),如冒泡階段。

?

如果從正在處理事件的節(jié)點(diǎn)中刪除事件偵聽器,則該事件偵聽器仍由當(dāng)前操作觸發(fā)。 刪除事件偵聽器后,決不會(huì)再次調(diào)用該事件偵聽器(除非再次注冊(cè)以備將來處理)。

?

參數(shù) type:String — 事件的類型。

?

listener:Function — 處理事件的偵聽器函數(shù)。 此函數(shù)必須接受 Event 對(duì)象作為其唯一的參數(shù),并且不能返回任何結(jié)果,如以下示例所示:
function(evt:Event):void

?

函數(shù)可以有任何名稱。

?


useCapture:Boolean (default = false) — 確定偵聽器是運(yùn)行于捕獲階段、目標(biāo)階段還是冒泡階段。 如果將 useCapture 設(shè)置為 true,則偵聽器只在捕獲階段處理事件,而不在目標(biāo)或冒泡階段處理事件。 如果 useCapture 為 false,則偵聽器只在目標(biāo)或冒泡階段處理事件。 要在所有三個(gè)階段都偵聽事件,請(qǐng)調(diào)用兩次 addEventListener,一次將 useCapture 設(shè)置為 true,第二次再將 useCapture 設(shè)置為 false。

?

priority:int (default = 0) — 事件偵聽器的優(yōu)先級(jí)。 優(yōu)先級(jí)由一個(gè)帶符號(hào)的 32 位整數(shù)指定。 數(shù)字越大,優(yōu)先級(jí)越高。 優(yōu)先級(jí)為 n 的所有偵聽器會(huì)在優(yōu)先級(jí)為 n -1 的偵聽器之前得到處理。 如果兩個(gè)或更多個(gè)偵聽器共享相同的優(yōu)先級(jí),則按照它們的添加順序進(jìn)行處理。 默認(rèn)優(yōu)先級(jí)為 0。

?

useWeakReference:Boolean (default = false) — 確定對(duì)偵聽器的引用是強(qiáng)引用,還是弱引用。 強(qiáng)引用(默認(rèn)值)可防止您的偵聽器被當(dāng)作垃圾回收。 弱引用則沒有此作用。
類 級(jí)別成員函數(shù)不屬于垃圾回收的對(duì)象,因此可以對(duì)類級(jí)別成員函數(shù)將 useWeakReference 設(shè)置為 true 而不會(huì)使它們受垃圾回收的影響。 如果對(duì)作為嵌套內(nèi)部函數(shù)的偵聽器將 useWeakReference 設(shè)置為 true,則該函數(shù)將被作為垃圾回收并且不再是永久函數(shù)。 如果創(chuàng)建對(duì)該內(nèi)部函數(shù)的引用(將該函數(shù)保存到另一個(gè)變量中),則該函數(shù)將不作為垃圾回收并仍將保持永久。

?

源自:http://hi.baidu.com/ls_mcx/blog/item/203febd9efdc633f32fa1c40.html

?

總結(jié)

以上是生活随笔為你收集整理的addListener添加事件监听器,第三个参数useCapture (Boolean) 的作用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。