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