Ngoài các công cụ "thô" do MutationObserver
API cung cấp , còn tồn tại các thư viện "tiện lợi" để làm việc với các đột biến DOM.
Xem xét: M mutObserver đại diện cho mỗi thay đổi DOM về mặt cây con. Vì vậy, nếu bạn đang chờ đợi một yếu tố nào đó được chèn vào, nó có thể nằm sâu bên trong trẻ em mutations.mutation[i].addedNodes[j]
.
Một vấn đề khác là khi mã của riêng bạn, phản ứng với các đột biến, thay đổi DOM - bạn thường muốn lọc nó ra.
Một thư viện tiện lợi tốt giải quyết các vấn đề như vậy là mutation-summary
(từ chối trách nhiệm: Tôi không phải là tác giả, chỉ là người dùng hài lòng), cho phép bạn chỉ định các truy vấn về những gì bạn quan tâm và có được chính xác điều đó.
Ví dụ sử dụng cơ bản từ các tài liệu:
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);
}
([{}])
đã đăng nhập vào bảng điều khiển, hiển thị mong đợiMutationRecord
khi tôi nhấp vào nó. Vui lòng kiểm tra lại, vì nó có thể là một lỗi kỹ thuật tạm thời trong JSFiddle. Tôi chưa thử nghiệm nó trong IE, vì tôi không có IE 10, hiện là phiên bản duy nhất hỗ trợ các sự kiện đột biến.