2012-03-29 3 views
1

DOMAttrModified에 대한 질문이 있습니다. 어떤 HTML 요소 속성을 변경하면 DOMAttrModified 이벤트가 트리거됩니다 (특히 Firefox에 관심이 있지만 다른 브라우저에도 적용 할 수 있습니다). 내가 elem.value이 elem.defaultValue로 변경하는 경우어떤 HTMLElement 속성 변경으로 인해 DOMAttrModified가 생성됩니까?

 var elem = document.createElement('input'); 
     document.body.appendChild(elem); 

     elem.id = 'inputId';  // triggers DOMAttrModified 
     elem.type = 'text';   // triggers DOMAttrModified 
     elem.value = 'inputValue'; // DOES NOT trigger DOMAttrModified 
     elem.lang = 'en';   // triggers DOMAttrModified 

은 다음 DOMAttrModified 트리거 얻을 않습니다

나는 다음과 같은 테스트 케이스가 있습니다. 어딘가에 포괄적 인 목록이 있습니까? 지금까지 HTMLInputElement의 'value'와 'checked'및 HTMLOptionElement의 'selected'속성이 DOMAttrModified가 아닌 것으로 나타났습니다. 다른 것이 있습니까?

'value'도 속성이므로 DOMAttrModified visual attributes의 대답은 완전히 정확하지 않습니다.

감사합니다,

답변

3

선일 DOM을 value 속성은 HTML value 마크 업 속성을 변경하지 않습니다. DOM defaultValue은 않습니다. DOMAttrModified은 마크 업 속성이 변경 될 때 실행되므로 setAttribute/removeAttribute을 호출하고 속성을 변경하는 모든 속성 세트에서 호출합니다.

+0

응답 해 주셔서 감사합니다. 하지만 제 질문은 DOMAttrModified를 실제로 일으키지 않는 '특수 속성'과 기타 '속성'의 포괄적 인 목록이 있는지입니다. 지금까지 나는 INPUT 요소의 'value'와 'checked', OPTION 요소의 'selected'를 발견했습니다. 그리고 DOMAttrModified (당연히)를 발생시키지 않는 'scrollLeft'와 'scrollTop'과 같은 속성이 있습니다. –

+0

@SunilAgrawal 예. 모든 특성의 정의에서 HTML 스펙을보십시오. 콘텐츠 속성을 반영한다고 말하지 않는 콘텐츠 속성에는 아무런 관련이 없습니다. 물론 그 목록은 없습니다. 그리고 HTML 사양에 정의되지 않은 내용은 분명히 내용 속성을 반영하지 않습니다. –

+0

제발, 제게 (위에서 언급 한 것 이외의) 몇 가지 예를 들어 주시겠습니까? 그냥 내가 대답을 이해하고 있는지 확인하고 싶습니다 :). –

3

'disabled'속성이 설정되어 있으면 DOMAttrModified 이벤트가 실행되지 않습니다. 그래서 당신의 사건이 해고되지 않는다면 그것은 이유 일 수 있습니다. 이것은 IE 전용 'onPropertyChange'이벤트에도 적용됩니다.

+1

Mutation Observers에도 해당 되는가? 즉 돌연변이 레코드에 포함되지 않았습니까? 그렇다면 그것은 어설프 것입니다. –

관련 문제