1.学习目的:
起初是老师提问知道dom-to-image的实现原理么(不知道),所以立刻跑去学习了,当然也多亏了老师总结的资料。不过……理解了整套流程以后,想到那这个方式的使用场合是怎样的呢?根据理解一定有网页截图、截屏。还可以做什么我一时会没有想到,如果想到了再来补充吧~
2.实现原理
使用svg的一个特性,允许在<foreignobject>标签中包含任意的html内容。主要是 [XMLSerializer |dom转为svg]developer.mozilla.org/zh-CN/docs/…
- 因此问需要转换为svg格式(可缩放矢量图形)
- 使用svg中的
<foreignobject>
- SVG元素允许包含不同的XML命名空间。在浏览器的上下文中,很可能是XHTML / HTML。
developer.mozilla.org/zh-CN/docs/…
- 因此我们需要将其转换为XHTML,那么如何将dom转化为XHTML?
-
XMLSerializer 对象使你能够把一个 XML 文档或 Node 对象转化或“序列化”为未解析的 XML 标记的一个字符串。
-
要使用一个 XMLSerializer,使用不带参数的构造函数实例化它 ,然后调用其 serializeToString() 方法:
-
完成转化耶~
-
转化完成后,我们来保存文件~
-
- 使用
canvas.drawImage(image, dx, dy)方法,在Canvas上绘制图像。需要特别注意的是我们要用源元素 的CSS大小; developer.mozilla.org/zh-CN/docs/…
- 使用
-
- 使用
canvas.toBlob(callback, type, encoderOptions);方法,创造Blob对象,将canvas对象转化成图像。(用以展示canvas上的图片;这个图片文件可以被缓存或保存到本地,由用户代理端自行决定。)
- 使用
- 完成~