代码之家  ›  专栏  ›  技术社区  ›  Johan

将文档对象传递给web工作者

  •  9
  • Johan  · 技术社区  · 12 年前

    我知道网络工作者不能直接访问dom。但是这样做是不是一个坏主意:

    var doc = $(document);
    
    var worker = new Worker("worker.js");
    
    worker.postMessage({ cmd: 'doDomStuff', data: doc });
    

    你看到这种代码有什么缺点吗?

    如有任何提示/意见,我们将不胜感激。

    更新: 需要明确的是:我只想从DOM中获取数据,而不想设置任何新值或以任何方式操作DOM。

    1 回复  |  直到 12 年前
        1
  •  10
  •   Community CDub    4 年前

    我看不出你有什么理由 不能 这样做,但当您试图同时在worker和main js代码中操作同一个元素时,这可能会导致问题。

    您需要在代码中添加一些互斥锁。

    抱歉划伤了上面。。。


    工人会这样做 不是 有权访问:

    DOM(它不是线程安全的)
    窗口对象
    文档对象
    父对象

    Source