Vérification si l'objet est un élément DOM [double]
-
16-10-2019 - |
Question
Cette question a déjà une réponse ici:
Passage des éléments DOM à WebWorkers devient délicat car toutes les références au DOM sont « perdus ». Je dois vérifier les objets qui sont passés avant le message de WebWorker est envoyé.
Quelle est la le plus rapide moyen de vérifier si une instance d'un objet est un DOM-élément OU / et une partie de l'arbre DOM, ou a un « enfants » qui contiennent des références à l'arbre DOM ?
morceau de l'usage:
var a = new SharedWorker("bigdatahandler.js");
a.postMessage(s);
s //<--should not be a DOM object
La solution
Pour vérifier si elle est un élément que je pense que obj.nodeName
est votre meilleur pari.
var a = new SharedWorker("bigdatahandler.js");
if (!s.nodeName) {
a.postMessage(s);
}
Vous pouvez également vérifier s instanceof Element
, parce que vous n'avez pas besoin de soutenir guess IE I:)
Pour vérifier si elle fait partie du DOM:
function inDOM(elem) {
do {
if (elem == document.documentElement) {
return true;
}
} while (elem = elem.parentNode)
return false;
}
Autres conseils
Pour vérifier si un objet est un élément par exemple, l'utilisation instanceof
:
s instanceof Element
Et pour vérifier son document propriétaire, utilisez ownerDocument
:
s.ownerDocument == document
Vérifier s instanceof Node
. Chaque objet DOM est un Node
.