Любое свойство DOM-узла == его атрибут
Возможно многие это знают уже давно, но вот я заметил это относительно недавно.
Не для кого не секрет, что любому DOM-узлу мозно прикрутить любое пользовательское свойство: var ele=document.getElementById('id'); ele.userProperty=true; И это иногда бывает действительно удобно, особенно в обработчиках событий. Но, если браузеры Mozilla, Opera ect. "знают" какие свойства-атрибуты есть у узлов, то IE прикручивает такие вещи непосредственно как аттрибут. Это можно посмотреть в IE8->средства разработчика и в IETester->дебаггер причём для всех версий. Возможно, это как-то связано с особенностью DOM-модели IE... Сначала меня это сильно смутило - а не возникнут ли какие-либо конфликты с этим, не считая того, что код уже невалиден. И вообще - это нормальный приём - использовать DOM для хранения чего-либо своего. Вот собственно в этом и вопрос. Ваши мнения?! |
Ещё хотел бы добавить:
Пути решения я смогу найти всегда - меня интересует именно этот подход. |
Скорее наоборот: атрибуты приравнены к свойствам.
Цитата:
http://xpoint.ru/know-how/JavaScript/Atributyi?8 зубрить. |
Цитата:
|
Цитата:
<div userData=true action="function(){}"></div> И это не есть валидно. Цитата:
Цитата:
|
Цитата:
Цитата:
|
Цитата:
|
Цитата:
Цитата:
Цитата:
|
Цитата:
|
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Цитата:
Цитата:
|
html при парсинге преобразуется в javascript-объекты (ну, не совсем javascript) и html-валидация к ним никакого отношения уже не имеет. Думать о валидации нужно до парсинга, для того она и придумана, что бы этот парсинг прошел удачно (если валидатор все понял, то и парсер браузера поймет).
|
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Цитата:
Цитата:
Меня волнует валидность, ок?:) Я просто пытаюсь понять - какая палка тут может вылезти. Мне не нравится, что в HTML (innerHTML) появляются левые атрибуты и ещё левее их свойства в ИЕ. Вас это не беспокоит?! Или вы не знали?! |
Цитата:
Цитата:
Цитата:
Цитата:
Я сейчас не могу вспомнить конкретных случаев из практики, где я натыкался на эту особенность, но они были и не раз. И если бы я не знал об этой особенности ИЕ, баг бы искал долго и упорно. |
Цитата:
А JS тут как раз и причём. Это же результат его работы в ИЕ:) Цитата:
Цитата:
Мы можем сделать вывод?! Не стоит на это обращать внимание, или лучше не хранить что-то в DOM?! |
Цитата:
|
Наверно речь о том что если записать в свойство объект, то при:
var d = el.innerHTML; el.innerHTML = d + 'text'; вместо объекта получится что-то неизвестное, ведь в "d" может быть только строковое (неполноценное) представление объекта. |
Цитата:
|
Riim,
Цитата:
|
Цитата:
Цитата:
|
Kolyaj,
я уже не про getAttribute, а про innerHTML . |
B~Vladi, если тебя это успокоит, то jQuery тоже добавляет свои свойства (а значит и атрибуты в случас с IE) в DOM-элементы:
<div id="abc" jQuery1251806138031="2"> :) |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
Уф... ну значит всё норм вродебэ... |
Часовой пояс GMT +3, время: 12:52. |