spmbt
@spmbt

Как различать объект DOM и объект Object в JS?

Как уверенно и кроссбраузерно различать эти объекты?

Можно воспользоваться свойствами: .id==строка, .attributes==массив, но это косвенно.

instanceof нечто — скорее всего, не найдётся кроссбраузерного класса.

Кто знает рекомендации от стандартизаторов? Кто какими методами пользуется?
  • Вопрос задан
  • 3096 просмотров
Пригласить эксперта
Ответы на вопрос 3
@oraz_ra
var isDomElement = document.getElementById('someId') instanceof HTMLElement;

самое важное: создать объект класса HTMLElement и его наследников просто так нельзя, т.е. нельзя написать
var el = new HTMLElement();
Ответ написан
@Panya
Я бы на наличие nodeType смотрел и не парился. Так кстати в jQuery делают.
Ответ написан
Комментировать
spmbt
@spmbt Автор вопроса
> document.body+''
"[object HTMLBodyElement]"
> document.querySelector('div')+''
"[object HTMLDivElement]"
> document.querySelector('span')+''
"[object HTMLSpanElement]"


Или то же самое - .toString() (это в Firefox) - начинает становиться некоторым стандартом. Раньше JQuery 1.x определяла DOM-элемент наличием свойства .attributes, когда разброс по выдачам у браузеров был велик.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы