Почему object.observe не работает для свойства value поля ввода?

Я играл с Object.observe в последней версии Chrome и задавался вопросом, почему он не работает для свойства «значение» ввода текста. Приведенный ниже код регистрирует изменение для добавления/изменения свойства 'foo', но не для изменения свойства значения. Кто-нибудь знает, почему?

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

Object.observe(myTextInput, function(changes){

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

});

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

person user2054105    schedule 31.08.2014    source источник
comment
Может быть, потому что узлы DOM являются хост-объектами и могут делать все, что захотят (вроде). Также обратите внимание, что Object.observe является частью ES7, очень экспериментальной и не доработанной.   -  person Felix Kling    schedule 31.08.2014
comment
Свойство .value DOM реализовано как геттер/сеттер, поэтому оно на самом деле не меняется.   -  person Bergi    schedule 01.09.2014
comment
@Bergi Кажется, это может быть. MutationObservers также не получает свойство value входных данных, вероятно, по той же причине. Интересно, как тогда хранится значение.   -  person user2054105    schedule 01.09.2014


Ответы (1)


Я не уверен, почему это так, но поскольку вы наблюдаете за атрибутами элемента DOM, api наблюдателя за мутациями может быть более подходящим.

person bcherny    schedule 01.09.2014
comment
Это также не работает со свойством value. Пробовал и ничего не получил. Эдди Османи также указала на это в этой статье (внизу под ограничениями): addyosmani.com/blog /mutation-наблюдатели - person user2054105; 01.09.2014
comment
Спасибо за ссылку! Я не знал об этом. - person bcherny; 02.09.2014