Как ждать, пока элемент существует?


Я работаю над расширением в Chrome, и мне интересно: каков лучший способ узнать, когда элемент появляется? Используя простой javascript, с интервалом, который проверяет, пока элемент не существует, или у jQuery есть простой способ сделать это?

1 175

1 ответ:

DOMNodeInserted является устаревшим, наряду с другими событиями мутации DOM, из - за проблем с производительностью-рекомендуемый подход заключается в использовании MutationObserver смотреть дом. Это поддерживается только в новых браузерах, хотя, так что вы должны вернуться на DOMNodeInserted, когда MutationObserver не имеется.

var observer = new MutationObserver(function(mutations) {
  mutations.forEach(function(mutation) {
    if (!mutation.addedNodes) return

    for (var i = 0; i < mutation.addedNodes.length; i++) {
      // do things to your newly added nodes here
      var node = mutation.addedNodes[i]
    }
  })
})

observer.observe(document.body, {
    childList: true
  , subtree: true
  , attributes: false
  , characterData: false
})

// stop watching using:
observer.disconnect()