2014-08-31 3 views
5

मैं क्रोम के नवीनतम संस्करण में ऑब्जेक्ट.ब्सर्व के साथ खेल रहा था और सोच रहा था कि यह टेक्स्ट इनपुट की 'मान' संपत्ति के लिए क्यों काम नहीं करता है। नीचे दिया गया कोड 'foo' संपत्ति को जोड़ने/बदलने के लिए एक परिवर्तन लॉग करेगा, लेकिन मूल्य संपत्ति को बदलने के लिए नहीं। किसी को पता है क्यों?object.observe इनपुट फ़ील्ड की मान संपत्ति के लिए क्यों काम नहीं करता है?

var myTextInput = document.getElementById('myTextInput'); 

Object.observe(myTextInput, function(changes){ 

    changes.forEach(function(change) { 
    console.log(change); 
    }); 

}); 

myTextInput.value = 'test123'; 
myTextInput.foo = 'bar'; 
+1

शायद क्योंकि डोम नोड होस्ट ऑब्जेक्ट्स हैं और मूल रूप से जो कुछ भी वे चाहते हैं (कर सकते हैं) कर सकते हैं। यह भी ध्यान रखें कि 'ऑब्जेक्ट.ब्सर्व' ईएस 7 का हिस्सा है, अत्यधिक प्रयोगात्मक और अंतिम रूप दिया गया है। –

+1

'.value' डोम संपत्ति को गेटर/सेटर के रूप में लागू किया गया है, इसलिए यह वास्तव में नहीं बदलता है। – Bergi

+0

@ बर्गि ऐसा लगता है कि यह क्या हो सकता है। MutationObservers भी एक ही कारण के लिए इनपुट की मूल्य संपत्ति नहीं उठाते हैं। मुझे आश्चर्य है कि मूल्य कैसे संग्रहीत किया जाता है। – user2054105

उत्तर

-1

मुझे यकीन है कि ऐसा क्यों है नहीं कर रहा हूँ, लेकिन जब से तुम एक डोम तत्व के गुणों को देख रहे हैं, mutation observer api अधिक उपयुक्त हो सकता।

+1

यह मूल्य संपत्ति पर भी काम नहीं करता है। कोशिश की और कुछ भी नहीं मिला। एडी ओस्मानी ने इस लेख में ("सीमाओं" के नीचे नीचे) की ओर इशारा किया: http://addyosmani.com/blog/mutation-observers/ – user2054105

+0

लिंक के लिए धन्यवाद! मुझे इसके बारे में पता नहीं था। – bcherny

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