«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как достоверно определить, является ли объект JavaScript элементом DOM?

Как достоверно определить, является ли объект JavaScript элементом DOM?

Опубликовано 8 ноября 2024 г.
Просматривать:167

How to Reliably Determine if a JavaScript Object is a DOM Element?

Как определить статус объекта DOM в JavaScript

В JavaScript очень важно различать объекты DOM (объектная модель документа) и обычные объекты JavaScript. для определенных операций. Хотя традиционный подход проверки свойства tagName работает в большинстве случаев, он может дать сбой в некоторых браузерах, которые не поддерживают свойства только для чтения.

Комплексное решение

Чтобы решить эту проблему, рассмотрите следующую функцию:

function isElement(obj) {
  try {
    // W3 DOM2 (works for FF, Opera, and Chrome)
    return obj instanceof HTMLElement;
  } catch (e) {
    // Non-DOM2 browsers
    return (
      typeof obj === 'object' &&
      obj.nodeType === 1 &&
      typeof obj.style === 'object' &&
      typeof obj.ownerDocument === 'object'
    );
  }
}

Этот код использует W3 DOM2 для поддерживаемых браузеров и проверяет определенные свойства в браузерах, не поддерживающих DOM2.

Дополнительные параметры

Другой подход заключается в том, чтобы используйте следующий код:

function isNode(o) {
  return typeof Node === 'object'
    ? o instanceof Node
    : o &&
        typeof o === 'object' &&
        typeof o.nodeType === 'number' &&
        typeof o.nodeName === 'string';
}

function isElement(o) {
  return typeof HTMLElement === 'object'
    ? o instanceof HTMLElement
    : o &&
        typeof o === 'object' &&
        o !== null &&
        o.nodeType === 1 &&
        typeof o.nodeName === 'string';
}

Этот код различает узлы и элементы DOM, устраняя потенциальные различия в реализациях браузеров.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3