Como determinar o status do objeto DOM em JavaScript
Em JavaScript, diferenciar entre objetos DOM (Document Object Model) e objetos JavaScript regulares é crucial para determinadas operações. Embora a abordagem tradicional de verificação da propriedade tagName funcione na maioria dos casos, ela pode falhar em alguns navegadores que não impõem propriedades somente leitura.
Uma solução abrangente
Para resolver esse problema, considere a seguinte função:
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'
);
}
}
Este código aproveita W3 DOM2 para navegadores suportados e verifica propriedades específicas em navegadores não DOM2.
Opções adicionais
Outra abordagem é use o seguinte código:
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';
}
Este código distingue entre nós e elementos DOM, abordando possíveis diferenças nas implementações do navegador.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3