Довольно просто, но это сработает, чтобы заменить то, где вы ждете.
Возможно, лучше отслеживать мутацию DOM, чем просто проверять каждые 40 миллисекунд.
// This is dummy code, will add an element after 3secs
setTimeout(() => {
const div = document.createElement('div');
div.classList.add('the-div');
div.innerText = 'I have arrived!';
document.querySelector('.container').appendChild(div);
}, 3000);
// This is the method.
const ready = (cssSelector, func) => {
// Try and get our element.
const el = document.querySelector(cssSelector);
if(el) {
// If we find it, execute the callback
func(el);
} else {
// Not there yet.
setTimeout(() => ready(cssSelector, func), 40);
}
}
ready('.the-div', (el) => {
console.log(el);
document.querySelector('.notify').innerText = 'Found our element!';
});
// Not for me, but :)
document.whenAvailable = ready;
document.whenAvailable('.the-div', () => console.log('Another Way!!'));
<div class="container"></div>
<div class="notify">Waiting</div>
Работа с MutationObserver может быть действительно хорошим вариантом здесь.