ben teknik olarak konuşursak,Bir öğeye başvuruda bulunulduğunda, belgeye eklendiğinde nasıl tespit edilir? .</p> <pre><code>onceAppended(element, callback); </code></pre> <p><code>element</code> bir geçerli:
o kullanılacak olan çevre hakkında hiçbir şey bilmeyen bir JavaScript modülü, gelişmekte Ve ediyorum, ben bir sonraki işlevi uygulamak istiyoruz HTMLElement
ve bu öğenin üst kısmı modül başlatılırken bilinmeyebilir. callback
, sayfada element
görüntülendiğinde tetiklenmesi gereken bir işlevdir.
Öğe, belgeye eklenmişse hemen çağrılmalıdır. element
'un henüz eklenmemesi durumunda, belgesinde element
görüntülendiğinde işlev tetiklenir.
element
ek olayını DOMNodeInserted
mutasyon olayı kullanarak algılayabiliriz. Ancak mutasyon olayları şimdi deprecated. Ve öyle görünüyor ki MutationObserver
bu görevi halledemiyor, değil mi?
function onceAppended (element, callback) {
let el = element,
listener;
while (el.parentNode)
el = el.parentNode;
if (el instanceof Document) {
callback();
return;
}
if (typeof MutationObserver === "undefined") { // use deprecated method
element.addEventListener("DOMNodeInserted", listener = (ev) => {
if (ev.path.length > 1 && ev.path[ev.length - 2] instanceof Document) {
element.removeEventListener("DOMNodeInserted", listener);
callback();
}
}, false);
return;
}
// Can't MutationObserver detect append event for the case?
}
bu konuda herhangi bir yardım için şimdiden teşekkür ederiz:
İşte benim kod parçacığı olduğunu!
@wOxxOm Konuyu biliyorsanız, işlevimi tamamlayabilir misiniz? Bunu MutationObservers ile uygulamaya çalıştım ve sonuç bulunamadı. – ZitRo
MutationObserver'ın bu görevi neden başaramadığını anlamıyorum. Ne denedin? Her eklenen düğümü belgelemek ve kontrol etmek için gözlemciyi eklemeniz gerekecek. Yine de çok etkisiz olacak. Yani belki de HTMLElement ve Node prototiplerinde “appendChild”, “replaceChild” ve diğer ilgili işlevleri geçersiz kılabilirsiniz. – wOxxOm
Ayrıca bakınız [DOMNodeInserted'e alternatif] (http://stackoverflow.com/a/10343915) – wOxxOm