传递文档正文而不在Web worker中编辑它

时间:2016-06-20 07:32:46

标签: javascript web-worker html2canvas

我正在使用html2canvas javascript库每秒多次截取正文的截图,但它会大大减慢浏览器会话的速度。库函数基本上接受一个DOM元素,循环遍历它并将其作为canvas元素再现。我想每次都将文档正文传递给Web worker,它将分别执行该函数。 我知道工作者无法访问DOM,但有没有办法可以序列化主体以成功传递它作为postMessage参数?

1 个答案:

答案 0 :(得分:1)

  

有没有什么方法可以序列化正文以成功传递它作为postMessage参数?

是的,使用(例如)outerHTML

var worker = new Worker("worker.js");
document.addEventListener("DOMContentLoaded", function(event) {
  worker.postMessage(document.body.outerHTML);
});

并在worker.js

self.onmessage = function(e) {
  console.log('In worker', e.data);
};

可以在https://plnkr.co/edit/M0OoIEiarr0HsOiSANUs?p=preview

看到

然而,正如TomášZato指出的那样,html2canvas可能无法在网络工作者中发挥作用。