Принятый ответ от 2010 года и использует плагин jQuery, который больше не поддерживается. Ответ с наибольшим количеством голосов предлагает использовать DOMSubTreeModified
, который теперь устарел и больше не должен использоваться.
Сегодня MutationObserver - это то, что вы должны использовать для обнаружения, когда элемент был добавлен в DOM. MutationObservers теперь широко поддерживаются во всех современных браузерах (Chrome 26+, Firefox 14+, IE11, Edge, Opera 15+ и т. Д.).
Вот простой пример того, как вы можете использовать MutationObserver
для прослушивания, когда элемент добавляется в DOM.
Для краткости я использую синтаксис jQuery для построения узла и вставки его в DOM.
var myElement = $("<div>hello world</div>")[0];
var observer = new MutationObserver(function(mutations) {
if (document.contains(myElement)) {
console.log("It's in the DOM!");
observer.disconnect();
}
});
observer.observe(document, {attributes: false, childList: true, characterData: false, subtree:true});
$("body").append(myElement); // console.log: It's in the DOM!
Обработчик события observer
сработает всякий раз, когда какой-либо узел добавляется или удаляется из document
. Внутри обработчика мы затем выполняем проверку contains
, чтобы определить, находится ли myElement
в document
.
Вам не нужно перебирать каждый MutationRecord, хранящийся в mutations
, потому что вы можете выполнить проверку document.contains
непосредственно на myElement
.
Чтобы повысить производительность, замените document
конкретным элементом, который будет содержать myElement
в DOM.