Я новичок в API MutationObserver, но я попытался использовать его для следующих целей:
У меня есть узел, который мне нужно скрыть после загрузки, и я добираюсь до узла, наблюдая за узлом добавления до тех пор, пока не будет найден .innerText или свойство.
Проблема в том, что элемент, который я должен наблюдать, дает мне массив из 4 списков узлов. Список узлов, которые нужно скрыть, - [1]. У меня работает следующий код, но я бы сказал, он не очень элегантен. В консоли Chrome dev я получаю множество ошибок Uncaught TypeError: Cannot read property 'innerText' of undefined
, и я почти уверен, что наблюдаются больше элементов, чем необходимо, около 200, тогда как узел, который нужно скрыть, является вторым извлеченным.
Вот код MutationObserver. Буду признателен, если вы помогли улучшить его:
// Callback function to run when changes are observed
function callback(mutations) {
mutations.forEach((mutation) => {
if (mutation.addedNodes[0].innerText.includes('Documents')) {
console.log(mutation.addedNodes[0].innerText);
mutation.addedNodes[0].style.display = 'none'; // Desired note is hidden in the DOM (end result)
}
});
}
// Elements to be observed
const node = document.querySelectorAll("div[class^='ControlZone-control']"); // Gives 4 node lists
// Create new instance, pass it callback function, then call .observe() and pass it node to be observed with options
for (let i = 0; i < node.length; i++) {
const observerInstance = new MutationObserver(callback).observe(node[i], {
childList: true,
subtree: true,
});
}