Heim > Artikel > Web-Frontend > So ermitteln Sie, ob ein JS-Objekt ein Dom-Objekt ist
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 === 'object' ) ? function(obj){ return obj instanceof HTMLElement; } : function(obj){ return obj && typeof obj === 'object' && obj.nodeType === 1 && typeof obj.nodeName === 'string'; } </script>