SPART4K
@SPART4K
Middle Front-end Developer (Vue.js/Nuxt.js)

Как мне обработать элемент после выполнения JS?

У меня есть элементв, допустим
<div class="docName">#rdocname#</div>
let docName = document.querySelector('.docName');

По ключу #rdocname# у меня после выполнения JS в элементе появляется определенный контент, представим что это:
'Hellow World'.
Если я прописываю
console.log(docName.textContent);
То в консоле мне выдает ключ а не уже преобразованный контент ( #rdocname# ) потому что текст заполняется после выполнения JS'ки.
Как мне достать уже преобразованный textContent в элементе чтобы в дальнейшей было возможно с ним работать? ( replace и тп )
  • Вопрос задан
  • 95 просмотров
Пригласить эксперта
Ответы на вопрос 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
как-то поймать момент обновления элемента.
Самое в лоб простое и ненадёжное: через таймаут. Если контент прописывается при загрузке страницы, там же поставить
setTimeout(() => {
  console.log(docName.innerText);
}, 3000); // через 3 секунды-то уже появится контент?


Правильнее привязаться к коду, который рассовывает содержимое, и в нём ловить событие, если такое предусмотрено.

Хакерский способ следить за изменениями этого узла через MutationObserver
spoiler
const config = { attributes: false, childList: true, subtree: true, characterData: true };

const callback = function(mutationsList, observer) {
    for(const mutation of mutationsList) {
        if (mutation.type === 'childList') {
            console.log(docName.textContent);
        }
    }
};

const observer = new MutationObserver(callback);

observer.observe(docName, config);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы