Selain alat "mentah" yang disediakan oleh MutationObserver
API , ada pustaka "kenyamanan" untuk bekerja dengan mutasi DOM.
Pertimbangkan: MutationObserver mewakili setiap perubahan DOM dalam hal subtrees. Jadi, jika Anda, misalnya, menunggu elemen tertentu dimasukkan, itu mungkin jauh di dalam diri anak-anakmutations.mutation[i].addedNodes[j]
.
Masalah lain adalah ketika kode Anda sendiri, sebagai reaksi terhadap mutasi, mengubah DOM - Anda sering ingin memfilternya.
Perpustakaan kenyamanan yang baik yang memecahkan masalah tersebut adalah mutation-summary
(penafian: Saya bukan pembuatnya, hanya pengguna yang puas), yang memungkinkan Anda menentukan pertanyaan dari apa yang Anda minati, dan mendapatkan persisnya.
Contoh penggunaan dasar dari dokumen:
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);
}
([{}])
masuk ke konsol, yang menunjukkan yang diharapkanMutationRecord
ketika saya mengkliknya. Silakan periksa lagi, karena ini mungkin merupakan kegagalan teknis sementara di JSFiddle. Saya belum mengujinya di IE, karena saya tidak punya IE 10, yang saat ini satu-satunya versi untuk mendukung peristiwa mutasi.