Javascript 在web worker中传递文档正文而不进行编辑

Javascript 在web worker中传递文档正文而不进行编辑,javascript,web-worker,html2canvas,Javascript,Web Worker,Html2canvas,我正在使用html2canvas javascript库每秒多次截取身体的屏幕,但这会大大降低浏览器会话的速度。库函数基本上接收DOM元素,循环遍历它并将其作为画布元素进行复制。我希望每次都将文档正文传递给web工作者,在那里它将单独执行该函数。 我知道worker无法访问DOM,但是有没有什么方法可以序列化主体以成功地将其作为postMessage参数传递 是否有任何方法可以序列化正文以成功地将其作为postMessage参数传递 是,使用(例如)outerHTML var worker =

我正在使用html2canvas javascript库每秒多次截取身体的屏幕,但这会大大降低浏览器会话的速度。库函数基本上接收DOM元素,循环遍历它并将其作为画布元素进行复制。我希望每次都将文档正文传递给web工作者,在那里它将单独执行该函数。 我知道worker无法访问DOM,但是有没有什么方法可以序列化主体以成功地将其作为postMessage参数传递

是否有任何方法可以序列化正文以成功地将其作为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);
};
可以在


然而,正如TomášZato指出的那样,
html2canvas
可能不适用于网络工作者。

您可以将正文作为纯HTML文本发送。但问题是工人也不能访问canvas元素及其绘图方法。好的,html2canvas库使用在画布上绘制的SVG。您解决了这个问题吗?你成功地将html2canvas与web worker一起使用了吗?@MohammadAdeghipour不幸的是,我没有。有可能序列化DOM吗?整个过程,包括html、内联css、文档脚本+添加到页面的任何脚本/链接?您可以序列化DOM,但不能序列化DOM方法和添加的任何函数。由于html2canvas严重依赖于画布方法,因此它不可能(轻松地)工作。