2014-08-31 3 views
5

최신 버전의 Chrome에서 Object.observe로 놀고 있었는데 왜 텍스트 입력의 'value'속성에서 작동하지 않는지 궁금합니다. 아래 코드는 'foo'속성을 추가/변경하기위한 변경 사항을 기록하지만 value 속성은 변경하지 않습니다. 왜 그런지 알아? 이 이유object.observe가 입력 필드의 value 속성에 대해 작동하지 않는 이유는 무엇입니까?

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

Object.observe(myTextInput, function(changes){ 

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

}); 

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

DOM 노드가 호스트 객체이기 때문에 기본적으로 원하는대로 (일종의) 할 수 있습니다. 또한 Object.observe는 ES7의 일부이며 고도로 실험적이며 최종적으로 작성되지 않았습니다. –

+1

'.value' DOM 속성은 getter/setter afair로 구현되어 있으므로 실제로 변경되지 않습니다. – Bergi

+0

@Bergi 그럴 수있는 것처럼 보입니다. MutationObservers는 아마도 같은 이유로 입력의 value 속성을 선택하지 않습니다. 나는 가치가 어떻게 저장되어 있는지 궁금합니다. – user2054105

답변

-1

는 잘 모르겠지만, 당신이 DOM 요소의 속성을 관찰하고 있기 때문에, mutation observer api이 더 적합 할 수있다.

+1

값 속성에서도 작동하지 않습니다. 그것을 시도하고 아무것도 없어. Addy Osmani는이 기사에서도 "제한 사항"아래쪽에있는 내용을 지적했습니다. http://addyosmani.com/blog/mutation-observers/ – user2054105

+0

링크를 제공해 주셔서 감사합니다! 나는 그 사실을 몰랐다. – bcherny