2011-09-11 13 views
8

मुझे अपने वेबपृष्ठ के अंदर किसी सेल की सामग्री में किसी भी बदलाव को रोकने की आवश्यकता है।जावास्क्रिप्ट में आंतरिक HTML परिवर्तनों को कैसे रोकें?

निम्नलिखित कोड मुझे पता चलता है कि addEventListener काम नहीं करता।

function modifyText() { 
alert("!"); 
} 

var el=document.getElementById("mycell"); 
el.innerHTML="a" 
el.addEventListener("change", modifyText, false); 
// After next instruction I expect an alert message but it does not appear... 
el.innerHTML="Z"; 

कोड सिर्फ एक खिलौना उदाहरण है। मेरे वास्तविक मामले में पृष्ठ में परिवर्तन (और इसलिए सेल में भी) वेबपैप द्वारा बनाए जाते हैं जिन पर मेरा कोई नियंत्रण नहीं है।

+0

आप किस ब्राउज़र प्रकार का परीक्षण कर रहे हैं? याद रखें आईई गैर-मानक .attachEvent() विधि का उपयोग करता है। –

+2

पहली जगह में बदलाव कैसे हो रहे हैं? जब आप "एक वेब ऐप" कहते हैं जो मुझे एक सर्वर-साइड एप्लिकेशन का तात्पर्य करता है जो पृष्ठ सामग्री बनाता है और देता है। यदि ऐसा है तो परिवर्तन जावास्क्रिप्ट कोड द्वारा पता लगाने योग्य नहीं होगा क्योंकि जावास्क्रिप्ट के दायरे से पहले "परिवर्तन" सर्वर पर भी लागू हुआ था। पृष्ठ पर जावास्क्रिप्ट के परिप्रेक्ष्य से, कोई बदलाव नहीं आया था। – David

उत्तर

8

आप किसी DOM तत्व change कि जिस तरह से बात नहीं कर सकते हैं। change घटना अधिकतर input s

कुछ अन्य नए डोम 3 ईवेंट हैं जो इस पर आपकी सहायता करेंगे।

DOMCharacterDataModified // ड्राफ्ट

DOMSubtreeModified

+0

दुर्भाग्यवश सभी उत्परिवर्तन घटनाओं को बहिष्कृत कर दिया गया है! क्या कोई अन्य जादुई घटना है जैसे कि DOMCharacterDataModified आंतरिक HTML मान परिवर्तनों को सुनने के लिए? – Rafe

1

इस Most efficient method of detecting/monitoring DOM changes? मदद करता है:

यहाँ कुछ है?

ऐसा लगता है वहाँ किसी भी 100% पार ब्राउज़र समाधान नहीं हैं, और समाधानों में से एक है, तो उनके innerHTML.length परिवर्तन देखने के लिए ब्याज के तत्वों मतदान पर है!

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