2014-06-21 10 views
8

मैं हाल ही में इस भयानक MutationObserver सुविधा में आया हूं जो किसी भी डोम तत्व पर परिवर्तनों के ट्रैक रखता है। मैंने कोड का उपयोग किया जो मोज़िला डेवलपर नेटवर्क पर दिखाया गया था, लेकिन इसे चलाने के लिए प्रतीत नहीं होता है।उत्परिवर्तन ऑब्सर्वर का उपयोग कैसे करें?

// create an observer instance 
var target = document.querySelector('#something'); 
console.log(target); 
var observer = new WebKitMutationObserver(function(mutations) { 
    mutations.forEach(function(mutation) { 
     console.log("Success"); 
     //$('#log').text('input text changed: "' + target.text() + '"'); 
     //console.log(mutation, mutation.type); 
    });  
}); 
observer.observe(target, { attributes: true, childList: true, characterData: true }); 
//observer.disconnect(); - to stop observing 

// test case 
setInterval(function(){ 
    document.querySelector('#something').innerHTML = Math.random(); 
},1000); 

ऊपर कोड काम करने के लिए लगता है नहीं है: यह कोड मैं का इस्तेमाल किया (link) है। हालांकि अगर मैं एक ही कोड को jQuery के साथ संशोधित करता हूं, तो सब कुछ ठीक काम करता है (डेमो here)। क्या मैं दस्तावेज़ों से कुछ खो रहा हूं या मैं पर्यवेक्षक सुविधा को गलत व्याख्या कर रहा हूं।

उत्तर

8

आप की जरूरत है subtree: true

http://jsfiddle.net/6Jajs/1/

भीतरी पाठ सामान्य रूप से डोम में एक बच्चे पाठ() तत्व होगा। Subtree के बिना यह केवल तत्व ही देखेंगे।

"चरित्र डेटा" (https://developer.mozilla.org/en-US/docs/Web/API/CharacterData) के आस-पास संभावित भ्रम है, लेकिन ऐसा लगता है कि यह केवल उन नोड्स पर लागू होता है जिनमें सीधे टेक्स्ट होता है। डीओएम संरचित है ताकि अधिकांश मार्कअप तत्वों में मिश्रित प्रकार होता है जो वैकल्पिक रूप से एक बाल पाठ नोड शामिल करता है (जो बदले में वर्ण डेटा लागू करेगा, लेकिन लक्षित नोड का बच्चा होगा)।

+0

स्पष्टीकरण के लिए धन्यवाद। मुझे पूछताछ करने से पहले कूदने से पहले और अधिक शोध करना चाहिए। :) –

+0

यह भी एक तर्क है कि jQuery जैसे टूल्स के साथ चिपकने के लिए मूल जावास्क्रिप्ट और डीओएम एपीआई अधिक शक्तिशाली हो गया है। अंतर्निहित एपीआई इन प्रकार के तकनीकी विवरणों को छिपा नहीं (और आईएमओ नहीं होना चाहिए), इसलिए उपयोगिता अमूर्तता की एक अतिरिक्त परत के लिए लाभ है। –

संबंधित मुद्दे