JavaScript/DOM:MutationObserver 用于检测 DOM 树中任何位置 `lang` 属性的变化
JavaScript/DOM: MutationObserver to detect changes on `lang` attributes anywhere in the DOM tree
是否可以使用一个 MutationObserver 检测文档中任何位置的 lang
属性更改?
我想也许像下面这样的东西可以解决问题,但它没有按预期工作(只检测根元素的 lang 属性变化)。
// This is NOT working as expected!!!
const observer = new MutationObserver(() => {
console.log('lang attribute has changed');
});
observer.observe(document, {
attributes: true,
attributeFilter: ['lang'],
subtree: true
// if I add `childList: true` here as sometime suggested on Whosebug,
// lang attribute changes somewhere deep in the document are
// still not detected.
});
以下代码(与问题中的代码相同)确实有效,并且会检测文档中任何位置的 lang
属性更改。
但重要的是要知道,只有 lang
属性的光 DOM 变化会被检测到,阴影 DOM 的变化不会被观察到。
const observer = new MutationObserver(() => {
console.log('lang attribute has changed');
});
observer.observe(document, {
attributes: true,
attributeFilter: ['lang'],
subtree: true
});
是否可以使用一个 MutationObserver 检测文档中任何位置的 lang
属性更改?
我想也许像下面这样的东西可以解决问题,但它没有按预期工作(只检测根元素的 lang 属性变化)。
// This is NOT working as expected!!!
const observer = new MutationObserver(() => {
console.log('lang attribute has changed');
});
observer.observe(document, {
attributes: true,
attributeFilter: ['lang'],
subtree: true
// if I add `childList: true` here as sometime suggested on Whosebug,
// lang attribute changes somewhere deep in the document are
// still not detected.
});
以下代码(与问题中的代码相同)确实有效,并且会检测文档中任何位置的 lang
属性更改。
但重要的是要知道,只有 lang
属性的光 DOM 变化会被检测到,阴影 DOM 的变化不会被观察到。
const observer = new MutationObserver(() => {
console.log('lang attribute has changed');
});
observer.observe(document, {
attributes: true,
attributeFilter: ['lang'],
subtree: true
});