- 创建一个canvas元素
- 创建svg文件,使用Blob构造函数
- 将svg中的值填充到foreignObject,然后再foreignObject中填充想要复制的节点的html
- 创建image标签,将image.src = URL.createObjectURL(svg)
- 在image读取完毕后,调用canvas的drawImage方法,将图片绘制到画布上。
const data =
`
<svg xmlns="http://www.w3.org/2000/svg" width="400px" height="400px">
<foreignObject width="100%" height="100%">
<div xmlns="http://www.w3.org/1999/xhtml">
${elemeny.innerHTML}
</div>
</foreignObject>
</svg>
`
const svg = new Blob([data], {type: "image/svg+xml;charset=utf-8"})
const url = URL.createObjectURL(svg)
const image = new Image()
image.src = url
image.addEventListener("load", () => {
const ctx = canvas.getContext('2d')
ctx.drawImage(image, 0, 0)
})