chi*_*ips 5 javascript svg worker offscreen-canvas
我正在开发一个网页,对 SVG 字符串数据进行一些相当繁重的处理。因为这些字符串的大小可能达到 m/bs,所以我想将 SVG 的渲染(取决于浏览器)移至工作人员,以避免阻塞 UI。
我的问题是,worker 中无法访问 DOM 元素 - 有没有办法仅使用 SVG 字符串将 SVG 绘制到 OffscreenCanvas 的 2D 上下文?或者有没有办法将字符串转换为可以传递给工作人员的数据格式?
还没有原生方式。
根据规范,即使在 Worker 中,您也应该能够从保存 SVG 图像的 Blob创建ImageBitmap 。
事实上,还没有浏览器实现了它,当我与实现者谈论它时,似乎没有人会这样做。
在 Chrome 中,您可以访问 Path2D 构造函数,它可以在某种程度上帮助处理<path>的d属性,但这实际上只是渲染 SVG 的一小部分。
所以最好的办法可能是使用一个库来实现这一点。
值得注意的是,我认为canvg在这里是最合适的。我自己不使用它,但它们已经存在很长时间了,而且似乎最新版本确实可以在 Worker 中(在 Chrome 中)与 OffscreenCanvas 配合使用。