11

DOMへのすべての参照が「失われる」ため、DOM要素をWebWorkersに渡すのは難しいです。WebWorkerのメッセージが送信されるに渡されるオブジェクトをチェックする必要があります。

オブジェクトのインスタンスがDOM要素OR/AND DOMツリーの一部であるかどうか、またはDOMツリーへの参照を含む「子」があるかどうかを確認する最も速い方法は何ですか?

使用法の一部:

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

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

3 に答える 3

10

オブジェクトがElementインスタンスかどうかを確認するには、次を使用しますinstanceof

s instanceof Element

所有者ドキュメントを確認するには、次を使用しますownerDocument

s.ownerDocument == document
于 2011-01-22T17:36:14.927 に答える
8

それが要素であるかどうかを確認するのobj.nodeNameが最善の策だと思います。

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

IEをサポートする必要がないので、チェックすることもできs instanceof Elementます:)

それがDOMの一部であるかどうかを確認するには:

function inDOM(elem) {
  do {
      if (elem == document.documentElement) {
         return true;
      }
  } while (elem = elem.parentNode)
  return false;
}​
于 2011-01-22T12:12:35.597 に答える
1

チェックしてくださいs instanceof Node。すべてのDOMオブジェクトはNodeです。

于 2011-01-22T16:39:44.980 に答える