Quelle est la meilleure façon de détecter si un objet Javascript est un élément DOM?

Disons par exemple que j'écrivais une fonction conçue pour accepter plusieurs types d'arguments:

var overloaded = function (arg) { if (is_dom_element(arg)) { // Code for DOM Element argument... } }; 

Quelle est la meilleure façon de mettre en œuvre is_dom_element pour qu'il fonctionne dans un navigateur croisé, de manière assez précise?

JQuery vérifie la propriété nodeType. Donc vous auriez:

 var overloaded = function (arg) { if (arg.nodeType) { // Code for DOM Element argument... } }; 

Bien que cela détecte tous les objets DOM, pas seulement des éléments. Si vous voulez des éléments simples, ce serait:

 var overloaded = function (arg) { if (arg.nodeType && arg.nodeType == 1) { // Code for DOM Element argument... } }; 

Probablement celui-ci ici:

 node instanceof HTMLElement 

Cela devrait fonctionner dans la plupart des navigateurs. Sinon, vous devez le typeof x.nodeType != 'undefined' (par exemple, typeof x.nodeType != 'undefined' )

Qu'en est-il de

 obj instanceof HTMLElement