Baseline Widely available
MutationObserver
ì¸í°íì´ì¤ì MutationObserver()
ìì±ìë DOMì ë³ê²½ì´ ë°ìí ë ì§ì í ì½ë°±ì í¸ì¶íë ê°ì§ê¸° ì¸ì¤í´ì¤ë¥¼ ìë¡ ìì±íê³ ë°íí©ëë¤.
ìì± ìì ìë DOM ë³ê²½ ê°ì§ê° ììíì§ ììµëë¤. ê°ì§ë¥¼ ììíë ¤ë©´ observe()
ë©ìë를 í¸ì¶í´ DOMì ì´ë ë¶ë¶ì 주ìí ê²ì¸ì§ì ì´ë¤ ë³ê²½ì ê°ì§í ê²ì¸ì§ ì¤ì í´ì¼ í©ëë¤.
new MutationObserver(callback)
매ê°ë³ì
callback
주ì´ì§ ë ¸ë ëë íì í¸ë¦¬ì ìµì ì ë§ì¡±íë DOM ë³ê²½ì ê°ì§íë©´ í¸ì¶í ì½ë°±ì ëë¤.
callback
í¨ìë ë ê°ì 매ê°ë³ì를 ë°ìµëë¤.
MutationRecord
ê°ì²´ë¤ì ë°°ì´MutationObserver
ìëì ìì ìì ë ìì¸í íì¸íì¸ì.
DOM ë³ê²½ì´ ë°ìíë©´ ì§ì í callback
ì í¸ì¶íë MutationObserver
ê°ì²´ì
ëë¤.
ì´ ìì ë ë
¸ëì ê·¸ ììë¤ì 주ìíì¬ ììê° í¸ë¦¬ì ì¶ê°ëê±°ë í¸ë¦¬ìì ì ê±°ëë ê²½ì°, ê·¸ë¦¬ê³ ììì í¹ì±ì´ ë³ê²½ëë ê²½ì°ë¥¼ ê°ì§íë ìë¡ì´ MutationObserver
를 ìì±í©ëë¤.
function callback(mutationList, observer) {
mutationList.forEach((mutation) => {
switch (mutation.type) {
case "childList":
/* í¸ë¦¬ì í ê° ì´ìì ììì´ ì¶ê°ëê±°ë ì ê±°ë ê²½ì°.
mutation.addedNodesì mutation.removedNodes를 ì°¸ê³ íì¸ì. */
break;
case "attributes":
/* mutation.targetì´ ê°ë¦¬í¤ë ììì í¹ì±ì´ ë°ë ê²½ì°.
í¹ì±ì ì´ë¦ì mutation.attributeNameì¼ë¡ ì ì ìê³ ,
ì´ì ê°ì mutation.oldValueë¡ ì ì ììµëë¤. */
break;
}
});
}
callback()
í¨ìë ê°ì§ê¸°ì observe()
를 í¸ì¶íì ë ì§ì í ì¤ì ì ë§ì¡±íë ë³ê²½ì ê°ì§íë©´ í¸ì¶ë©ëë¤.
ì¼ì´ë ë³ê²½ì ì¢
ë¥(ìì 목ë¡ì ë³ê²½, í¹ì±ì ë³ê²½)ë mutation.type
ìì±ì íµí´ ì ì ììµëë¤.
ì¤ì ë¡ ê°ì§ ì 차를 ììíë ì½ëë ë¤ìê³¼ ê°ìµëë¤.
const targetNode = document.querySelector("#someElement");
const observerOptions = {
childList: true,
attributes: true,
// false를 ì§ì íê±°ë ìì ìëµíì¬ ë¶ëª¨ ë
¸ëì ë³ê²½ë§ ê°ì§
subtree: true,
};
const observer = new MutationObserver(callback);
observer.observe(targetNode, observerOptions);
주ìíê³ ì íë íì í¸ë¦¬ë someElement
ë¼ë ID를 ê°ì§ ìì를 íµí´ íìí©ëë¤. observerOptions
ë ì½ëìë ê°ì§ê¸°ì ìµì
ì ì¤ì í©ëë¤. ììì ë³ê²½ê³¼ í¹ì±ì ë³ê²½ì 모ë ê°ì§íê³ ì íë¯ë¡ childList
ì attributes
를 모ë true
ë¡ ì§ì í©ëë¤.
ê·¸ ë¤ììë ê°ì§ê¸° ì¸ì¤í´ì¤ë¥¼ ìì±íë©´ì callback()
í¨ì를 ì§ì íê³ , target
ë
¸ëì options
ê°ì²´ë¥¼ ì ê³µíì¬ observe()
를 í¸ì¶, íì í¸ë¦¬ì ë³ê²½ ê°ì§ë¥¼ ììí©ëë¤.
ì´í disconnect()
를 í¸ì¶í기 ì ê¹ì§ë DOM í¸ë¦¬ì targetNode
ìëìì ìë¡ì´ ììê° ì¶ê°ëê±°ë ì ê±°ëë ê²½ì°, ëë targetNode
ê¹ì§ í¬í¨íì¬ ìì ì¤ íëì í¹ì±ì´ ë°ëë ê²½ì° callback()
ì´ í¸ì¶ë©ëë¤.
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