检查对象是否是DOM元素

时间:2011-01-22 12:06:38

标签: javascript dom web-worker

将DOM元素传递给WebWorkers变得棘手,因为对DOM的所有引用都“丢失”了。我需要检查在发送WebWorker消息之前传递的对象。

检查对象实例是DOM元素的OR / AND部分的最快方式是什么,或者是否包含对DOM树的任何引用的“子” ?

用法:

var a = new SharedWorker("bigdatahandler.js");   
a.postMessage(s);

s //<--should not be a DOM object

3 个答案:

答案 0 :(得分:10)

要检查对象是否为Element个实例,请使用instanceof

s instanceof Element

要查看其所有者文档,请使用ownerDocument

s.ownerDocument == document

答案 1 :(得分:8)

要检查它是否是一个元素,我认为obj.nodeName是您最好的选择。

var a = new SharedWorker("bigdatahandler.js");   
if (!s.nodeName) {
    a.postMessage(s);
}

您还可以查看s instanceof Element,因为您不需要支持IE我想:)

检查它是否是DOM的一部分:

function inDOM(elem) {
  do {
      if (elem == document.documentElement) {
         return true;
      }
  } while (elem = elem.parentNode)
  return false;
}​

答案 2 :(得分:0)

检查s instanceof Node。每个DOM对象都是Node