MutationObserver
एपीआई द्वारा प्रदान किए गए "कच्चे" टूल के अलावा , DOM म्यूटेशन के साथ काम करने के लिए "सुविधा" लाइब्रेरी मौजूद हैं।
विचार करें: MutationObserver उपशीर्षक के संदर्भ में प्रत्येक DOM परिवर्तन का प्रतिनिधित्व करता है। इसलिए, यदि आप, उदाहरण के लिए, एक निश्चित तत्व के सम्मिलित होने की प्रतीक्षा कर रहे हैं, तो यह बच्चों के अंदर गहरा हो सकता है mutations.mutation[i].addedNodes[j]
।
एक अन्य समस्या यह है कि जब आपका अपना कोड उत्परिवर्तन की प्रतिक्रिया में DOM को बदलता है - तो आप अक्सर इसे फ़िल्टर करना चाहते हैं।
एक अच्छी सुविधा पुस्तकालय जो इस तरह की समस्याओं को हल करता है mutation-summary
(अस्वीकरण: मैं लेखक नहीं हूं, सिर्फ एक संतुष्ट उपयोगकर्ता हूं), जो आपको उन प्रश्नों को निर्दिष्ट करने में सक्षम बनाता है जो आप में रुचि रखते हैं, और वास्तव में प्राप्त करते हैं।
डॉक्स से मूल उपयोग उदाहरण:
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);
}
([{}])
कंसोल पर लॉग इन दिखाई देता है, जोMutationRecord
उस पर क्लिक करने पर अपेक्षित दिखाता है। कृपया फिर से जांचें, क्योंकि यह JSFiddle में एक अस्थायी तकनीकी विफलता हो सकती है। मैंने इसे IE में अभी तक परीक्षण नहीं किया है, क्योंकि मेरे पास IE 10 नहीं है, जो वर्तमान में उत्परिवर्तन घटनाओं का समर्थन करने के लिए एकमात्र संस्करण है।