MutationObserver
API tarafından sağlanan "ham" araçlara ek olarak, DOM mutasyonlarıyla çalışmak için "kolaylık" kitaplıkları da vardır.
Şunu düşünün: MutationObserver, alt ağaçlar açısından her DOM değişikliğini temsil eder. Örneğin, belirli bir öğenin yerleştirilmesini bekliyorsanız, öğelerinin derinliklerinde olabilir mutations.mutation[i].addedNodes[j]
.
Başka bir sorun, kendi kodunuz mutasyonlara tepki olarak DOM'u değiştirdiğinde - genellikle filtrelemek istediğinizdir.
Bu tür sorunları çözen iyi bir kolaylık kütüphanesi mutation-summary
(sorumluluk reddi: Yazar değilim, sadece memnun bir kullanıcıyım), ilgilendiğiniz şeyleri sorgulamanızı ve tam olarak bunu almanızı sağlar.
Dokümanlardan temel kullanım örneği:
var observer = new MutationSummary({
callback: updateWidgets,
queries: [{
element: '[data-widget]'
}]
});
function updateWidgets(summaries) {
var widgetSummary = summaries[0];
widgetSummary.added.forEach(buildNewWidget);
widgetSummary.removed.forEach(cleanupExistingWidget);
}
([{}])
Konsola kaydedilmiş görüyorum , bu daMutationRecord
tıkladığımda beklenenleri gösteriyor . JSFiddle'da geçici bir teknik arıza olabileceğinden lütfen tekrar kontrol edin. Şu anda mutasyon olaylarını desteklemek için tek sürüm olan IE 10'a sahip olmadığım için henüz IE'de test etmedim.