2014-08-31 16 views
5

Chrome'un en son sürümünde Object.observe ile oynuyordum ve neden bir metin girişinin 'value' özelliği için çalışmadığını merak ediyordum. Aşağıdaki kod, 'foo' özelliğini eklemek/değiştirmek için bir değişiklik, ancak değer özelliğini değiştirmek için bir değişiklik yapmaz. Nedenini bilen var mı? Bu yüzdenobject.observe neden bir giriş alanının değer özelliği için çalışmıyor?

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

Object.observe(myTextInput, function(changes){ 

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

}); 

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

Belki de DOM düğümleri ana nesnelerdir ve temel olarak istedikleri şeyi yapabilirler (tür). Ayrıca, 'Object.observe', ES7'nin bir parçasıdır, oldukça deneysel ve kesinleştirilmemiş. –

+1

'.value' DOM özelliği, getter/setter afair olarak uygulandı, bu yüzden gerçekten değişmiyor. – Bergi

+0

@Bergi Ne olabileceği gibi görünüyor. Mutasyon gözlemciler de muhtemelen aynı nedenden dolayı girdilerin değer özelliğini almazlar. O zaman değerin nasıl saklandığını merak ediyorum. – user2054105

cevap

-1

emin değilim, ama bir DOM öğesinin özellikleri gözlemliyoruz beri mutation observer api daha uygun olabilir.

+1

Bu, değer özelliği üzerinde de çalışmaz. Denedim ve hiçbir şey almadı. Addy Osmani, bu makalede de ("sınırlamaların" alt kısmında) şunları belirtmiştir: http://addyosmani.com/blog/mutation-observers/ – user2054105

+0

Bağlantı için teşekkürler! Bunun farkında değildim. – bcherny

İlgili konular