2012-02-27 15 views
31

संभव डुप्लिकेट:
Detect changes in the DOMक्या कोई "डीओएम परिवर्तन पर" घटना है?

मैं सेटअप करने के लिए एक ईवेंट हैंडलर, जो जब भी कुछ/संलग्न बदल/डोम पर निकाल दिया जाता है सक्रिय किया जाना चाहिए की जरूरत है। This answer मेरे मामले में काम नहीं करता है। डीओएम को तीसरे पक्ष के डेवलपर्स द्वारा संशोधित किया जा सकता है, और प्रत्येक डीओएम परिवर्तन पर, हमें कोड को सत्यापित करने के लिए हमारी स्क्रिप्ट चलाने की आवश्यकता है। घटना इनपुट/textarea/चयन परिवर्तन पर आग नहीं होना चाहिए।

हम सभी ब्राउज़रों को लक्षित नहीं करते हैं। जब तक यह वेबकिट (क्रोम, सफारी) पर काम करता है, यह काफी अच्छा है।

कोई भी विचार?

+6

है किसी को भी सवाल है कि इस की एक सटीक डुप्लिकेट है के लिए लिंक है? मैं यहाँ Google से आया था। – travis

+5

@travis: सटीक डुप्लिकेट नहीं, लेकिन बंद करें: http://stackoverflow.com/questions/3219758/detect-changes-in-the-dom – Sherzod

+2

@travis: मुझे वास्तव में वह उत्तर मिला जो मेरे मामले के अनुरूप है: 'DOMSubtreeModified' का उपयोग करके घटना, लेकिन आपको ब्राउज़र समर्थन की जांच करने की आवश्यकता है। वेबकिट इसके साथ ठीक काम करता है। – Sherzod

उत्तर

3

मुझे नहीं लगता कि सभी ब्राउज़रों में ऐसी कोई घटना है। मैं एक कस्टम घटना के साथ जाऊंगा और जब भी मैं डोम में हेरफेर करता हूं तो इसे ट्रिगर करता हूं।

//Subscribe to domChanged event 
$(document).bind('domChanged', function(){ 
    alert('Dom changed'); 
}); 

//Trigger the domChanged event 
$(document).trigger('domChanged'); 
+16

समस्या यह बताती है कि डोम किसी तीसरे पक्ष द्वारा मैन्युप्लेटेड है। तो यह काम नहीं करेगा। – Myster

+1

'domChanged' को एक ईवेंट मॉड्यूल में निरंतर परिभाषित किया जाना चाहिए। उदाहरण के लिए, 'निर्यात कॉस्ट domInjected =' myDOMInjected '; '(ES6) आप निकट भविष्य में कुछ भी पहले से मौजूद होने का सावधानी बरतना चाहेंगे ... जैसे DOMNodeInserted –

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