本次技术研究来源于H5项目中一个重要的功能需求:实现微信长按保存网页截图。举个栗子(请用微信打开,长按图片保存):3分钟探索你的知识边界将整个网页保存为图片是一个很有意思的功能,经常在文末分享H5活动页面。以下是项目中的研究和陷阱的一些总结和总结。1、将HTML网页保存为图片1.1已知可行的方案现有已知的可以将网页保存为图片的方案有:方案一:将DOM重写成canvas,然后使用canvas的toDataURL方法输出DOM以包含图片显示方案二:使用html2canvas.js实现(canvas2Image.js可选,将网页保存为图片)方案三:使用rasterizeHTML.js实现1.2解决方案方案一:需要手动计算每个DOM元素的ComputedStyle,以及然后需要计算元素在画布上的大小和位置等属性。方案一难点:相当于完全重写了整个页面的布局样式,增加了工作量。由于canvas中没有对象概念,对于元素丰富、布局复杂的页面,重构所有DOM元素并重写到canvas中并不容易,会带来一些困难,例如:难以支持响应性,图像元素清晰度差以及文字点击区域Identificationissues等。解决方案2:该类型的功能中,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方法将返回包含