2019.12更新:《高质量前端快照方案:来自页面的「自拍」》2019.12更新:《高质量前端快照方案:来自页面的「自拍」》2019.12更新:《高质量前端快照方案:来自页面的「自拍」》新作见上文~一个重要的功能需求:实现微信长按网页另存为截图。举个栗子(请用微信打开,长按图片保存):3分钟探索你的知识边界将整个网页保存为图片是一个很有意思的功能,经常在文末分享H5活动页面。以下是项目中的研究和陷阱的一些总结和总结。1.将HTML页面保存为图片1.1已知可行方案现有已知的可以将网页保存为图片的方案有:方案一:将DOM重写成canvas,然后使用canvas的toDataURL方法输出DOM以包含图片显示方案二:使用html2canvas.js来实现(canvas2Image.js是可选的,可以将网页另存为图片)方案三:使用rasterizeHTML.js实现1.2方案方案方案一:需要手动计算每个DOM元素的ComputedStyle,然后需要计算元素在画布上的大小和位置以及其他属性。方案一难点:相当于完全重写了整个页面的布局样式,增加了工作量。由于canvas中没有对象的概念,重构元素丰富、布局复杂的页面并不容易。将所有DOM元素重写到canvas中会带来一些困难,例如难以支持响应性、图像元素的清晰度差、文本点击区域的识别等。解决方案二:这类功能中,Github上star最多(至今还在维护),StackOverflow上也有丰富的讨论。直接调用html2canvas方法,设置配置项即可。解决方案3:此解决方案有很多限制。目前,它只支持3种可以转换为canvas的目标格式:页面url、html字符串和文档对象。总结:html2canvas是目前实现网页保存为图片功能最好的综合选择。1.3html2canvas官方GitHub的使用方法:https://github.com/niklasvh/h...以下说明针对html2canvas版本0.5.0-beta41.3.1第一步存为图片:将html转换成canvasbased在html2canvas上.js可以将元素渲染为画布,只需调用html2canvas(element[,options]);以下html2canvas方法将返回包含