La risposta accettata è del 2014 ed è obsoleta. Un setTimeout
potrebbe funzionare, ma non è il più pulito e non garantisce necessariamente che l'elemento sia stato aggiunto al DOM.
Oggi, uno MutationObserver è ciò che è necessario utilizzare per rilevare quando un elemento è stato aggiunto al DOM. MutationObservers ora è ampiamente supportato da tutti i browser moderni (Chrome 26+, Firefox 14+, IE11, Edge, Opera 15+, ecc.).
Quando un elemento è stato aggiunto al DOM, sarà possibile recuperare le sue dimensioni effettive.
Ecco un semplice esempio di come è possibile utilizzare un MutationObserver
da ascoltare quando un elemento viene aggiunto al DOM.
Per brevità, sto usando la sintassi jQuery per creare il nodo e inserirlo nel 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!
Il gestore eventi observer
attiverà ogni volta che viene aggiunto o rimosso dal document
qualsiasi nodo. All'interno del gestore, eseguiamo quindi un controllo contains
per determinare se myElement
è ora nello document
.
Non è necessario iterare su ciascuna MutationRecord memorizzata in mutations
perché è possibile eseguire il controllo document.contains
direttamente su myElement
.
Per migliorare le prestazioni, sostituire document
con l'elemento specifico che conterrà myElement
nel DOM.
fonte
2018-01-30 06:04:52
Nel caso in cui qualcuno trovi questa domanda, è possibile trovare buone risposte qui http://stackoverflow.com/a/5629730/697388 e qui http://stackoverflow.com/a/850995/697388 –
possibile duplicato di [Come per verificare se l'elemento esiste nel DOM visibile?] (http://stackoverflow.com/questions/5629684/how-to-check-if-element-exists-in-the-visible-dom) – iConnor
possibile duplicato di [Is è possibile determinare quando un elemento è stato reso utilizzando JavaScript?] (http://stackoverflow.com/questions/3667991/is-is-possible-to-determine-when-an-element-has-been-rendered-using -javascript) – Purefan