Baseline Widely available
MutationObserver
ì observe()
ë©ìëë ì§ì í ìµì
ì ë§ì¡±íë DOM ë³ê²½ ì림ì ìì í ê²½ì° MutationObserver
ì ì½ë°±ì í¸ì¶íëë¡ ì¤ì í©ëë¤.
ì¤ì ì ë°ë¼ì MutationObserver
ë DOM í¸ë¦¬ì ë¨ì¼ Node
를 주ìíê±°ë, ë
¸ëì ê·¸ ìë ë
¸ë를 모ë 주ìí ì ììµëë¤.
MutationObserver
ì ì½ë°±ì´ ë ì´ì í¸ì¶ëì§ ìëë¡ íë ¤ë©´ MutationObserver.disconnect()
를 ì¬ì©íì¸ì.
target
DOM í¸ë¦¬ ë´ìì ë³ê²½ì ê°ì§í ë
¸ë ëë íì í¸ë¦¬ 루í¸ë¡ìì Node
ì
ëë¤. (Element
í¬í¨)
options
주ìíê³ ì íë DOM ë³ê²½ì ëíë´ë ê°ì²´ì
ëë¤. ì´ ìµì
ì ë§ì¡±íë DOM ë³ê²½ë¤ë§ MutationObserver
ì ì½ë°±ì¼ë¡ ì ë¬ë©ëë¤. ì ì´ë childList
, attributes
, characterData
ì¤ íëë true
ì¬ì¼ íë©° ì¸ ìì± ëª¨ë false
ë©´ TypeError
ê° ë°ìí©ëë¤.
ì¬ì© ê°ë¥í ìµì ì ë¤ìê³¼ ê°ìµëë¤.
subtree
Optional
true
ë¡ ì§ì íë©´ target
ì´ ë£¨í¸ì¸ íì í¸ë¦¬ ì 체를 주ìí©ëë¤. ë¤ë¥¸ ìµì
ë¤ë target
ë
¸ë íëê° ìëë¼ ì´ íì í¸ë¦¬ì ìí 모ë ë
¸ëì ëí´ ì ì©ë©ëë¤. 기본 ê°ì false
ì
ëë¤.
childList
Optional
true
ë¡ ì§ì íë©´ ëì ë
¸ëì ììì´ ì¶ê°ëê±°ë 기존 ììì´ ì ê±°ëë ê²ì ê°ì§í©ëë¤. subtree
ê° true
ë©´ ììë¤ì ìì ë³ê²½ë ê°ì§í©ëë¤. 기본 ê°ì false
ì
ëë¤.
attributes
Optional
true
ë¡ ì§ì íë©´ 주ì ì¤ì¸ ë
¸ë ëë ë
¸ëë¤ì í¹ì± ë³ê²½ì ê°ì§í©ëë¤. 기본 ê°ì attributeFilter
ëë attributeOldValue
ê° ì§ì ë ê²½ì° true
, ìëë©´ false
ì
ëë¤.
attributeFilter
Optional
ë³ê²½ì ê°ì§í í¹ì± ì´ë¦ì ë°°ì´ì ëë¤. ì´ ìì±ì ì§ì íì§ ìì¼ë©´ 모ë í¹ì±ì ë³ê²½ì´ ì림ì ìì±í©ëë¤.
attributeOldValue
Optional
true
ë¡ ì§ì íë©´ ë
¸ëì í¹ì± ë³ê²½ì ê°ì§íì ë í´ë¹ í¹ì±ì´ ë°ë기 ì ê°ì 기ë¡í©ëë¤. 기본 ê°ì false
ì
ëë¤.
characterData
Optional
true
ë¡ ì§ì íë©´ ëì ë
¸ë ë´ì í
ì¤í¸ê° ë°ëë ê²ì ê°ì§í©ëë¤. subtree
ê° true
ë©´ ììë¤ì í
ì¤í¸ ë³ê²½ë ê°ì§í©ëë¤. 기본 ê°ì characterDataOldValue
ê° ì§ì ë ê²½ì° true
, ìëë©´ false
ì
ëë¤.
characterDataOldValue
Optional
true
ë¡ ì§ì íë©´ ë
¸ëì í
ì¤í¸ ë³ê²½ì ê°ì§íì ë ë°ë기 ì ì í
ì¤í¸ë¥¼ 기ë¡í©ëë¤. 기본 ê°ì false
ì
ëë¤.
ìì (undefined
).
TypeError
ë¤ì ìí©ìì ë°ìí©ëë¤.
options
ë¡ë ê°ì§í ì ìë ë³ê²½ì´ ìì ë (childList
, attributes
, characterData
ê° ëª¨ë false
ì¼ ë)options
ì attributes
ê° false
(í¹ì± ë³ê²½ì ê°ì§íì§ ìì)ì¸ë° attributeOldValue
ê° true
ê±°ë attributeFilter
를 ì§ì í ê²½ì°options
ì characterData
ê° false
(í
ì¤í¸ ë³ê²½ì ê°ì§íì§ ìì)ì¸ë° characterDataOldValue
ê° true
ì¸ ê²½ì°MutationObserver
ì¸ì¤í´ì¤ íëì observe()
를 ì¬ë¬ ë² í¸ì¶íë©´ DOM í¸ë¦¬ 곳곳ì ìë¡ ë¤ë¥¸ ë³ê²½ ì íì íëì ê°ì§ê¸°ë§ì¼ë¡ ê°ì§í ì ììµëë¤. íì§ë§ 주ìí´ì¼ í ì ì´ ììµëë¤.
MutationObserver
ì¸ì¤í´ì¤ê° 주ì ì¤ì¸ ë
¸ë를 ê°ì ì¸ì¤í´ì¤ë¡ ë¤ì 주ìí ê²½ì°, ì´ ë
¸ëì ëí í´ë¹ ì¸ì¤í´ì¤ì 기존 주ìë ìëì¼ë¡ í´ì ëê³ ìë¡ ììí©ëë¤.MutationObserver
ì¸ì¤í´ì¤ê° ê·¸ ë
¸ë를 주ìíê³ ìì§ ììë¤ë©´ ë¤ë¥¸ 주ìë¤ì ìí¥ì ë°ì§ ììµëë¤.MutationObserver
ë ë
¸ëë¤ì ì°ê²°ì´ ëì´ì ¸ë 주ìê° ëê¸°ì§ ìëë¡ ì¤ê³ëìµëë¤. ê·¸ëì 주ì ì¤ì¸ íì í¸ë¦¬ì ì¼ë¶ë¥¼ ë¶ë¦¬í´ DOMì ë¤ë¥¸ ê³³ì¼ë¡ ì®ê¸°ë ëìì ê·¸ ë
¸ëë¤ì í¹ì±ì ë³ê²½íë ê²½ì°ìë í¹ì± ë³ê²½ ì림ê¹ì§ ìì í ì ììµëë¤.
ë¤ì ë§í´, 주ì ì¤ì¸ íì í¸ë¦¬ìì ë ¸ëê° ë¶ë¦¬ëë¤ë ìë¦¼ì´ ì½ë°±ê¹ì§ ì ë¬ë기 ì ê¹ì§ë ë¶ë¦¬ë íì í¸ë¦¬ì í´ë¹ ë ¸ëì ë³ê²½ ì¬íì ëí ì림ì ê³ì ë°ìµëë¤.
ì´ì ê°ì 주ì ëìì¼ë¡ ì¸í´, ê°ê°ì ë³ê²½ì ëíë´ë MutationRecord
ê°ì²´ë¤ì ë³´ê´í´ëë¤ë©´ ì´ë¡ ì ì¼ë¡ë í¸ë¦¬ì ë¶ë¦¬ë¥¼ "ì¤í ì·¨ì" íì¬ DOM ìí를 ëê°ë ê² ê°ë¥í©ëë¤.
ì´ ìì ììë MutationObserver
ì¸ì¤í´ì¤ë¥¼ ìì±í í ëì ë
¸ëì ìµì
ê°ì²´ë¥¼ ì¬ì©í´ observe()
ë©ìë를 í¸ì¶íë ë°©ë²ì ë³´ì
ëë¤.
// 주ìí ìì ìë³
const elementToObserve = document.querySelector("#targetElementId");
// ì½ë°± í¨ì를 ì§ì í ìë¡ì´ MutationObserver ì¸ì¤í´ì¤ ìì±
// observer ë³ìì í ë¹
const observer = new MutationObserver(() => {
console.log("callback that runs when observer is triggered");
});
//
// ì MutationObserver ì¸ì¤í´ì¤ì observe() ë©ìë를 í¸ì¶
// 주ìí ììì ìµì
ê°ì²´ ì ë¬
observer.observe(elementToObserve, { subtree: true, childList: true });
attributeFilter
ì¬ì©í기
ì´ ìì ë ì±í
ë°©ì ê°ì íê³ , ì¬ì©ìë¤ì ì´ë¦ì í¬í¨í íì í¸ë¦¬ë¥¼ 주ìíì¬ status
ì username
í¹ì±ì ë³ê²½ë¥¼ ê°ì§í©ëë¤. ê·¸ íìë ì¬ì©ìê° ëë¤ìì ë³ê²½í ê²½ì°ë¥¼ ë°ìíê±°ë, ì리ë¹ì ìí를 ê°ì¡°íë ë±ì 기ë¥ì ì¶ê°í ì ìì ê²ì
ëë¤.
function callback(mutationList) {
mutationList.forEach((mutation) => {
switch (mutation.type) {
case "attributes":
switch (mutation.attributeName) {
case "status":
userStatusChanged(mutation.target.username, mutation.target.status);
break;
case "username":
usernameChanged(mutation.oldValue, mutation.target.username);
break;
}
break;
}
});
}
const userListElement = document.querySelector("#userlist");
const observer = new MutationObserver(callback);
observer.observe(userListElement, {
attributeFilter: ["status", "username"],
attributeOldValue: true,
subtree: true,
});
ëª
ì¸ì ë¸ë¼ì°ì í¸íì±
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