Baseline Widely available
EventTarget
ç removeEventListener()
æ¹æ³å¯ä»¥å é¤ä½¿ç¨ EventTarget.addEventListener()
æ¹æ³æ·»å çäºä»¶ãå¯ä»¥ä½¿ç¨äºä»¶ç±»åï¼äºä»¶ä¾¦å¬å¨å½æ°æ¬èº«ï¼ä»¥åå¯è½å½±åå¹é
è¿ç¨çåç§å¯éæ©çé项çç»åæ¥æ è¯è¦å é¤çäºä»¶ä¾¦å¬å¨ãåè§ä¸æçå¹é
è¦å é¤çäºä»¶çå¬å¨ã
è°ç¨ removeEventListener()
æ¶ï¼è¥ä¼ å
¥çåæ°ä¸è½ç¨äºç¡®å®å½å注åè¿çä»»ä½ä¸ä¸ªäºä»¶çå¬å¨ï¼è¯¥å½æ°ä¸ä¼èµ·ä»»ä½ä½ç¨ã
妿ä¸ä¸ª EventTarget
ä¸çäºä»¶çå¬å¨å¨å¦ä¸çå¬å¨å¤ç该äºä»¶æ¶è¢«ç§»é¤ï¼é£ä¹å®å°ä¸è½è¢«äºä»¶è§¦åãä¸è¿ï¼å®å¯ä»¥è¢«éæ°ç»å®ã
è¦åï¼ å¦æåä¸ä¸ªäºä»¶çå¬å¨åå«ä¸ºâäºä»¶æè·ï¼capture
为 true
ï¼âåâäºä»¶å泡ï¼capture
为 false
ï¼â注åäºä¸æ¬¡ï¼è¿ä¸¤ä¸ªçæ¬ççå¬å¨éè¦åå«ç§»é¤ãç§»é¤æè·çå¬å¨ä¸ä¼å½±åéæè·çæ¬çç¸åçå¬å¨ï¼åä¹äº¦ç¶ã
è¿æä¸ç§ç§»é¤äºä»¶çå¬å¨çæ¹æ³ï¼å¯ä»¥å addEventListener()
ä¼ å
¥ä¸ä¸ª AbortSignal
ï¼ç¨ååè°ç¨æ¥æè¯¥äºä»¶çæ§å¶å¨ä¸ç abort()
æ¹æ³å³å¯ã
removeEventListener(type, listener);
removeEventListener(type, listener, options);
removeEventListener(type, listener, useCapture);
åæ°
type
ä¸ä¸ªå符串ï¼è¡¨ç¤ºéè¦ç§»é¤çäºä»¶ç±»åã
listener
éè¦ä»ç®æ äºä»¶ç§»é¤çäºä»¶çå¬å¨å½æ°ã
options
å¯é
ä¸ä¸ªæå®äºä»¶ä¾¦å¬å¨ç¹å¾çå¯é对象ãå¯é项æï¼
capture
: ä¸ä¸ªå¸å°å¼ï¼æå®éè¦ç§»é¤çäºä»¶çå¬å¨å½æ°æ¯å¦ä¸ºæè·çå¬å¨ãå¦ææªæå®æ¤åæ°ï¼é»è®¤å¼ä¸º false
ãuseCapture
å¯é
ä¸ä¸ªå¸å°å¼ï¼æå®éè¦ç§»é¤çäºä»¶çå¬å¨å½æ°æ¯å¦ä¸ºæè·çå¬å¨ãå¦ææªæå®æ¤åæ°ï¼é»è®¤å¼ä¸º false
ã
æ ï¼undefined
ï¼ã
åè®¾ä½ ä¹åéè¿ addEventListener()
æ·»å äºä¸ä¸ªäºä»¶çå¬å¨ï¼ä½ æ»ä¼å¨æäºæ
åµä¸éè¦å°å
¶ç§»é¤ã徿æ¾ï¼ä½ éè¦æä¾ç¸åç type
å listener
åæ°ç» removeEventListener()
ï¼ä½æ¯ options
æè
useCapture
åæ°å¢ï¼
å½ä½¿ç¨ addEventListener()
æ¶ï¼å¦æ options
åæ°ä¸åï¼é£ä¹ä½ å¯ä»¥å¨ç¸åç type
ä¸å¤æ¬¡æ·»å ç¸åççå¬ï¼å¯ä¸éè¦ removeEventListener()
æ£æµçæ¯ capture
/useCapture
æ å¿ãè¿ä¸ªæ å¿å¿
é¡»ä¸ removeEventListener()
çå¯¹åºæ å¿å¹é
ï¼ä½æ¯å
¶ä»çå¼ä¸éè¦ã
举个ä¾åï¼æèä¸ä¸ä¸é¢ç addEventListener()
ï¼
element.addEventListener("mousedown", handleMouseDown, true);
ç°å¨æèä¸ä¸é¢ä¸¤ä¸ª removeEventListener()
:
element.removeEventListener("mousedown", handleMouseDown, false); // 失败
element.removeEventListener("mousedown", handleMouseDown, true); // æå
第ä¸ä¸ªè°ç¨å¤±è´¥æ¯å 为 useCapture
没æå¹é
ã第äºä¸ªè°ç¨æåï¼æ¯å 为 useCapture
å¹é
ç¸åã
ç°å¨åæèä¸è¿ä¸ªï¼
element.addEventListener("mousedown", handleMouseDown, { passive: true });
è¿éï¼æä»¬å¨ options
对象éå° passive
设æ true
ï¼å
¶ä» options
é
ç½®é½æ¯é»è®¤å¼ false
ã
ç°å¨æä»¬çä¸ä¸é¢ç removeEventListener()
ãå½é
ç½® capture
æ useCapture
为 true
æ¶ï¼ç§»é¤äºä»¶å¤±è´¥ï¼å
¶ä»ææé½æ¯æåçãè¿è¯´æåªæ capture
é
置影å removeEventListener()
ã
element.removeEventListener("mousedown", handleMouseDown, { passive: true }); // æå
element.removeEventListener("mousedown", handleMouseDown, { capture: false }); // æå
element.removeEventListener("mousedown", handleMouseDown, { capture: true }); // 失败
element.removeEventListener("mousedown", handleMouseDown, { passive: false }); // æå
element.removeEventListener("mousedown", handleMouseDown, false); // æå
element.removeEventListener("mousedown", handleMouseDown, true); // 失败
å¼å¾æ³¨æçæ¯ï¼ä¸äºæµè§å¨çæ¬å¨è¿æ¹é¢ä¼æäºä¸ä¸è´ãé¤éä½ æç¹å«ççç±ï¼ä½¿ç¨ä¸è°ç¨ addEventListener()
æ¶é
ç½®çåæ°å»è°ç¨ removeEventListener()
æ¯ææºçã
以ä¸ä¾åå±ç¤ºäºæ·»å ä¸å é¤çå¬äºä»¶ï¼
const body = document.querySelector("body");
const clickTarget = document.getElementById("click-target");
const mouseOverTarget = document.getElementById("mouse-over-target");
let toggle = false;
function makeBackgroundYellow() {
body.style.backgroundColor = toggle ? "white" : "yellow";
toggle = !toggle;
}
clickTarget.addEventListener("click", makeBackgroundYellow, false);
mouseOverTarget.addEventListener("mouseover", () => {
clickTarget.removeEventListener("click", makeBackgroundYellow, false);
});
è§è æµè§å¨å
¼å®¹æ§ åè§
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4