"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment déterminer de manière fiable si un objet JavaScript est un élément DOM ?

Comment déterminer de manière fiable si un objet JavaScript est un élément DOM ?

Publié le 2024-11-08
Parcourir:821

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

Comment déterminer l'état d'un objet DOM en JavaScript

En JavaScript, la distinction entre les objets DOM (Document Object Model) et les objets JavaScript classiques est cruciale pour certaines opérations. Bien que l'approche traditionnelle consistant à vérifier la propriété tagName fonctionne dans la plupart des cas, elle peut échouer dans certains navigateurs qui n'appliquent pas les propriétés en lecture seule.

Une solution complète

Pour résoudre ce problème, considérez la fonction suivante :

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'
    );
  }
}

Ce code exploite W3 DOM2 pour les navigateurs pris en charge et vérifie les propriétés spécifiques dans les navigateurs non-DOM2.

Options supplémentaires

Une autre approche consiste à utilisez le code suivant :

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';
}

Ce code fait la distinction entre les nœuds et les éléments DOM, en traitant des différences potentielles dans les implémentations des navigateurs.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3