Heim  >  Artikel  >  Web-Frontend  >  So ermitteln Sie, ob ein JS-Objekt ein Dom-Objekt ist

So ermitteln Sie, ob ein JS-Objekt ein Dom-Objekt ist

高洛峰
高洛峰Original
2016-12-05 14:32:211338Durchsuche

Wenn wir js-Code schreiben, müssen wir manchmal feststellen, ob ein Objekt ein DOM-Objekt ist, bevor wir nachfolgende Vorgänge ausführen. Hier stelle ich Ihnen eine Methode vor, die mit den wichtigsten Browsern kompatibel und relativ sicher ist.

Um festzustellen, ob ein Objekt ein DOM-Objekt ist, fällt mir zunächst ein, ob es verschiedene Attribute oder Merkmale eines DOM-Objekts aufweist, z. B. ob es ein nodeType-Attribut, ein tagName-Attribut usw. hat . Je mehr Merkmale beurteilt werden, desto zuverlässiger ist es, denn schließlich können unsere benutzerdefinierten JS-Objekte auch diese Attribute haben. Gibt es andere Methoden?

Ein HTMLElement-Objekt ist im DOM Level2-Standard definiert, der vorschreibt, dass alle DOM-Objekte Instanzen von HTMLElement sind, sodass wir dies verwenden können, um festzustellen, ob ein Objekt ein DOM-Objekt ist: Wenn das Das Objekt ist eine Instanz von HTMLElement und muss ein DOM-Objekt sein. In Browsern, die HTMLElement nicht unterstützen, verwenden wir weiterhin die Funktionserkennung.

<script type="text/javascript">
  //首先要对HTMLElement进行类型检查,因为即使在支持HTMLElement
  //的浏览器中,类型却是有差别的,在Chrome,Opera中HTMLElement的
  //类型为function,此时就不能用它来判断了
  var isDOM = ( typeof HTMLElement === &#39;object&#39; ) ?
        function(obj){
          return obj instanceof HTMLElement;
        } :
        function(obj){
          return obj && typeof obj === &#39;object&#39; && obj.nodeType === 1 && typeof obj.nodeName === &#39;string&#39;;
        }
  </script>


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn