2012-03-29 3 views
1

У меня есть вопрос о DOMAttrModified. Какие изменения свойств HTML-элемента запускают событие DOMAttrModified (особенно интересует Firefox, но может быть достаточно ответа на другие браузеры)?Какое свойство свойства 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 

Если изменить elem.value к elem.defaultValue, то DOMAttrModified действительно становится срабатывает. Есть ли исчерпывающий список? До сих пор я обнаружил, что свойство «value» и «checked» HTMLInputElement и выбранное свойство HTMLOptionElement не запускают DOMAttrModified. Есть ли другие?

Ответ на вопрос DOMAttrModified visual attributes НЕ представляется абсолютно правильным, так как «значение» также является атрибутом.

Спасибо, Сунил

ответ

3

DOM-value свойство не изменяет атрибут разметки HTML value. DOM defaultValue делает. DOMAttrModified срабатывает, когда изменяются атрибуты разметки, и так далее: setAttribute/removeAttribute вызывает и на любой набор свойств, который изменяет атрибут.

+0

Спасибо за ответ. Но мой вопрос в том, есть ли полный список таких «специальных атрибутов» и другого «свойства», которые на самом деле не вызывают DOMAttrModified. До сих пор я обнаружил «значение» элемента «INPUT» и «checked», элемент «OPTION» «selected». И тогда есть такие свойства, как «scrollLeft» и «scrollTop», которые не вызывают DOMAttrModified (понятно). –

+0

@SunilAgrawal Конечно. Посмотрите в спецификации HTML на определения всех свойств. Те, которые не говорят, что они отражают атрибут контента, не имеют ничего общего с атрибутами контента. Конечно, их нет. И все, что не определено в спецификации HTML, очевидно, не отражает атрибуты контента. –

+0

Просто ради меня, пожалуйста, дайте мне несколько примеров (кроме тех, которые я упомянул выше). Просто хочу, чтобы я понял ответ :). –

3

Также обратите внимание, что при включении атрибута «disabled» не запускаются никакие события DOMAttrModified. Поэтому, если ваше мероприятие не стреляет, это может быть причиной. Это также относится к событию onPropertyChange только для IE.

+1

Это верно даже для наблюдателей мутаций, то есть они не включены в записи мутаций? Если да, это будет облом. –