最近 Chrome 更新,導致先前寫的 JS 失效。
一、簡單說明
Mutation Events 因為過於冗長,觸發太頻繁導致拖慢速度甚至瀏覽器當機,所以建構了代替的 API MutationObserver。
從 Chrome 127 版開始,Mutation Events 支援預設改為停用。
Mutation Events 包含:- DOMSubtreeModified
- DOMNodeInserted
- DOMNodeRemoved
- DOMNodeRemovedFromDocument
- DOMNodeInsertedIntoDocument
- DOMCharacterDataModified
二、改用 MutationObserver
舊的寫法target.addEventListener('DOMNodeInserted', event => doSomething(event.target));新的寫法
const observer = new MutationObserver(mutationList => mutationList.filter(m => m.type === 'childList').forEach(m => { m.addedNodes.forEach(doSomething); })); observer.observe(target, { childList: true, subtree: true });
留言
張貼留言