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
});