Принятый ответ с 2014 года и теперь устарел. A setTimeout
может работать, но он не самый чистый и не обязательно гарантирует, что элемент был добавлен в DOM.
Сегодня MutationObserver - это то, что вы должны использовать для определения того, когда элемент добавлен в DOM. MutationObservers теперь широко поддерживаются во всех современных браузерах (Chrome 26+, Firefox 14+, IE11, Edge, Opera 15+ и т. Д.).
Когда элемент добавлен в DOM, вы сможете получить его фактические размеры.
Вот простой пример того, как вы можете использовать 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
.
Вам не нужно выполнять итерацию по каждому мутационному регистру, хранящемуся в mutations
, потому что вы можете выполнить проверку document.contains
непосредственно на myElement
.
Для повышения производительности замените document
на конкретный элемент, который будет содержать myElement
в DOM.
В случае, если кто-то найдет этот вопрос, хорошие ответы можно найти здесь http://stackoverflow.com/a/5629730/697388 и здесь http://stackoverflow.com/a/850995/697388 –
Возможный дубликат [Как проверить, существует ли элемент в видимой DOM?] (http://stackoverflow.com/questions/5629684/how-to-check-if-element-exists-in-the-visible-dom) – iConnor
Возможный дубликат [Is можно определить, когда элемент был обработан с использованием JavaScript?] (http://stackoverflow.com/questions/3667991/is-is-possible-to-determine-when-an-element-has-been-rendered-using -javascript) – Purefan