Qual é a melhor maneira de detectar se um determinado objeto Javascript é um elemento DOM? [duplicado]

StackOverflow https://stackoverflow.com/questions/120262

  •  02-07-2019
  •  | 
  •  

Pergunta

Say por exemplo, eu estava escrevendo uma função que foi projetado para aceitar vários tipos de argumentos:

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

Qual é a melhor maneira de implementar is_dom_element para que ele funcione em um cross-browser, maneira bastante precisa?

Foi útil?

Solução

jQuery verifica a propriedade nodeType. Então você teria que:

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

Embora isso possa detectar todos os objetos DOM, e não apenas elementos. Se você quer elementos sozinho, que seria:

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

Outras dicas

Provavelmente este aqui:

node instanceof HTMLElement

Isso deve funcionar na maioria dos navegadores. Caso contrário, você tem que abaixar-type-lo (por exemplo. typeof x.nodeType != 'undefined')

E

obj instanceof HTMLElement
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top