国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

addEventListener()第三個參數useCapture (Boolean)詳細解析

2024-05-06 15:54:19
字體:
來源:轉載
供稿:網友
true的觸發順序總是在false之前;如果多個均為true,則外層的觸發先于內層;如果多個均為false,則內層的觸發先于外層

舉例

<div>
  <div>
    <div>
      <div>
      </div>
    </div>
  </div>
</div>

如果在 d3 上點擊鼠標,事件流是這樣的:

捕獲階段 在 div1 處檢測是否有 useCapture 為 true 的事件處理程序,若有,則執行該程序,然后再同樣地處理 div2。

目標階段 在 div3 處,發現 div3 就是鼠標點擊的節點,所以這里為目標階段,若有事件處理程序,則執行該程序,這里不論 useCapture 為 true 還是 false。

冒泡階段 在 div2 處檢測是否有 useCapture 為 false 的事件處理程序,若有,則執行該程序,然后再同樣地處理 div1。

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

<div>
<div>
    <div>請在此點擊鼠標。</div>
</div>
</div>

<div></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);

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

•全為 false 時,觸發順序為:inDiv、middleDiv、outDiv;

•全為 true 時,觸發順序為:outDiv、middleDiv、inDiv;

•outDiv 為 true,其他為 false 時,觸發順序為:outDiv、inDiv、middleDiv;

•middleDiv 為 true,其他為 false 時,觸發順序為:middleDiv、inDiv、outDiv;

•……

最終得出如下結論:

•true 的觸發順序總是在 false 之前;

•如果多個均為 true,則外層的觸發先于內層;

•如果多個均為 false,則內層的觸發先于外層。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 德化县| 南京市| 兰州市| 牟定县| 开阳县| 海兴县| 淄博市| 锡林郭勒盟| SHOW| 筠连县| 遂昌县| 荥经县| 河东区| 嘉鱼县| 泸水县| 青冈县| 临江市| 庐江县| 岑巩县| 雅安市| 睢宁县| 剑河县| 万源市| 三河市| 东安县| 卓资县| 民乐县| 泰兴市| 库尔勒市| 堆龙德庆县| 洞头县| 吐鲁番市| 和平县| 玛纳斯县| 通江县| 抚远县| 奇台县| 剑河县| 邯郸县| 山丹县| 玉屏|