首页 > 解决方案 > 无法在“MutationObserver”上执行“观察”:参数 1 不是“节点”类型

问题描述

我正在创建一个脚本来为某些元素添加属性。我希望它适用于动态添加的元素。我想使用 Mutation Observe,但我收到了这个错误: Failed to execute 'observe' on 'MutationObserver': parameter 1 is not of type 'Node'.

我使用的代码:

const langAdding = (tag) => {
    tag.setAttribute('lang', 'en-us');
}

const target = document

const callback = (mutations, observer) => {
    mutations.forEach(mutation => {
        switch (mutation.type) {
            case 'childList':
                for (const el of mutation.addedNodes) {
                    if (!el.hasAttribute("lang")) {
                        el = langAdding(el) 
                    } else if (el.firstElementChild) {
                        for (const child of el.getElementsByTagName('p')) {
                            child = langAdding(child);
                    }
                }
                break;
        }
    })
}

const observer = new MutationObserver(callback);

observer.observe(target, {
    childList: true,
    attributes: true,
    characterData: true,
    subtree: true
});

我真的不知道我是否做对了一切。如果您发现错误,请帮助我

标签: javascriptdommutation-observers

解决方案


问题中的代码可以正常工作,我只需要删除代码中的最后一行(observer.disconnect()),我非常感谢@wOxxOm 的帮助,他帮助返工了回调。


推荐阅读