html2canvas网页截图处理不可见区域
2016-12-12 21:36
906 查看
最近的一个项目中,涉及到网页截屏的功能,正常通过后端php GD扩展处理的图片并不如人意,所以经过一翻搜索,找到了html2canvas这个工具,话不多说先上代码
首先引入html2canvas。
然后执行截图功能
但是,这次是应用在H5中,要截取的是一个应用了iscroll的滚动区域,通常来讲,html2canvas只能截取到浏览器中的可见区域。
为了克服这个问题,再进行搜索看到很多人提到 allowTaint 这个属性,但是设置后并没有效果,同时从官方的文档了解到html2canvas对与css3的支持很不友好,经过一番痛苦的挣扎后,尝试通过另一条途径来解决。
html2canvas是通过选取dom节点,来进行canvas绘制,当元素设置为不可见的时候是无法绘制的,所以我采用了一种取巧的方法,在html2canvas方法出发前,将准备截图的dom节点复制到一个隐藏在页面最下层的dom节点内,将该节点的层级设置为最底层,即:z-index最小。
position: absolute;
z-index: 0;
截图时,选取dom节点为该节点,就可以完整的将所有区域都截取到!
然后我们就可以在onrendered回调中对截取的图片进行处理。
如果你在项目中又遇到要截取的dom节点有css3属性时,可以参照我的方法来进行截图操作。
如果文章内容有错误,欢迎指正。
邮箱:jackqth@163.com
首先引入html2canvas。
<script src="js/html2canvas.min.js"></script>
然后执行截图功能
html2canvas(DOM, { //DOM为文档节点对象 如:$('body') 或 document.getElementById('xx') onrendered: function(canvas) { var data=canvas.toDataURL("image/jpg");//生成的格式 //data 为base64格式的图片编码,将data放如src中即可阅览图片 } });
但是,这次是应用在H5中,要截取的是一个应用了iscroll的滚动区域,通常来讲,html2canvas只能截取到浏览器中的可见区域。
为了克服这个问题,再进行搜索看到很多人提到 allowTaint 这个属性,但是设置后并没有效果,同时从官方的文档了解到html2canvas对与css3的支持很不友好,经过一番痛苦的挣扎后,尝试通过另一条途径来解决。
html2canvas是通过选取dom节点,来进行canvas绘制,当元素设置为不可见的时候是无法绘制的,所以我采用了一种取巧的方法,在html2canvas方法出发前,将准备截图的dom节点复制到一个隐藏在页面最下层的dom节点内,将该节点的层级设置为最底层,即:z-index最小。
position: absolute;
z-index: 0;
截图时,选取dom节点为该节点,就可以完整的将所有区域都截取到!
然后我们就可以在onrendered回调中对截取的图片进行处理。
如果你在项目中又遇到要截取的dom节点有css3属性时,可以参照我的方法来进行截图操作。
如果文章内容有错误,欢迎指正。
邮箱:jackqth@163.com
相关文章推荐
- html2canvas 实现纯JS网页截图简单例子
- Web开发之html2canvas 实现纯JS网页截图简单例子
- html2canvas根据DOM元素样式实现网页截图
- 找到网页的某一区域,截图,并保存 HTML to Image
- js通过html2canvas,jspdf,canvg来对网页进行截图生成pdf
- html2canvas 实现纯JS网页截图简单例子
- html2canvas根据DOM元素样式实现网页截图
- html2canvas插件对整个网页或者网页某一部分截图并保存为图片
- 网页转图片--- html2canvas截图
- html2canvas网页截图不清晰问题
- html2canvas 网页截图 下载 上传
- 把Html插入canvas实现网页截图
- html2canvas根据DOM元素样式实现网页截图
- 【HTML】使用iframe标签显示目标网页(内容)的指定区域(转)
- HTML 5 的 Canvas 中应用卷积矩阵对图像处理
- js获取网页可见区域、正文以及屏幕分辨率的高度
- js获取网页可见区域、正文以及屏幕分辨率的高度
- CDHtmlDialog探索----WebBrowser扩展和网页Javascript错误处理
- Web网页里的HTML链接的处理和界面的跳转
- 【HTML】使用iframe标签显示目标网页(内容)的指定区域