html2canvas截图空白问题的解决


Posted in HTML / CSS onMarch 24, 2020

最近在项目中遇到一个需求,需要提供网页截图的功能。百度下发现html2canvas很好用。那就试试吧。

资源下载地址

插件下载地址:html2canvas下载地址

使用方式

项目使用的react组件开发方式。参照官方的说明文档getting-started.md,按照以下步骤进行:

1、使用以下命令安装

npm install html2canvas --save

2、在文件中引入html2canvas

import html2canvas from 'html2canvas';

3、文件中的使用

html2canvas(document.body).then(function(canvas) {
document.body.appendChild(canvas);
});

遇到的问题

按照这个方式使用,页面没有滚动条还行,有滚动条时出现大片空白。

错误截图如下:

html2canvas截图空白问题的解决

解决方案

仔细看了一下configuration.md和网友的分析,最终解决。代码片段如下

html2canvas截图空白问题的解决

上一张正确的截图如下:

html2canvas截图空白问题的解决

代码中的配置项说明

1、截图产生空白是因为容器高度设置的问题,设置windowHeight的高度等于页面包含滚动条的高度即可获取滚动条中的内容。这一条就可以解决空白的问题。
2、设置width、height属性的原因是,我们在页面中截图显示的区域宽度和高度是固定的,就是当前屏幕的可见区域。
3、设置x、y坐标的原因是由于页面在有滚动条的时候,需要指定截图的起始位置。本项目中x轴方向不存在滚动条,所以设置为零;y方向有滚动条,所以需要获取一下当前方向的滚动坐标。
4、一般网页中会有图片,图片中有链接地址时,设置useCORS属性可保证图片的加载。

到此这篇关于html2canvas截图空白问题的解决的文章就介绍到这了,更多相关html2canvas截图空白内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章,希望大家以后多多支持三水点靠木!

HTML / CSS 相关文章推荐
利用CSS的Sass预处理器(框架)来制作居中效果
Mar 10 HTML / CSS
分享8款纯CSS3实现的搜索框功能
Sep 14 HTML / CSS
CSS3 优势以及网页设计师如何使用CSS3技术
Jul 29 HTML / CSS
让IE6支持css3,让 IE7、IE8 都支持CSS3
Oct 09 HTML / CSS
修复iPhone的safari浏览器上submit按钮圆角bug
Dec 24 HTML / CSS
css3中transition属性详解
Sep 02 HTML / CSS
CSS3实现可爱的小黄人动画
Jul 11 HTML / CSS
HTML5中drawImage用法分析
Dec 01 HTML / CSS
h5实现获取用户地理定位的实例代码
Jul 17 HTML / CSS
五分钟学会HTML5的WebSocket协议
Nov 22 HTML / CSS
html5 移动端视频video的android兼容(去除播放控件、全屏)
Mar 26 HTML / CSS
css3实现的加载动画效果
Apr 07 HTML / CSS
html5视频常用API接口的实战示例
Mar 20 #HTML / CSS
Html5页面上如何禁止手机虚拟键盘弹出
Mar 19 #HTML / CSS
Html5 Canvas实现图片标记、缩放、移动和保存历史状态功能 (附转换公式)
Mar 18 #HTML / CSS
Html+Css+Jquery实现左侧滑动拉伸导航菜单栏的示例代码
Mar 17 #HTML / CSS
canvas实现手机的手势解锁的步骤详细
Mar 16 #HTML / CSS
HTML利用九宫格原理进行网页布局
Mar 13 #HTML / CSS
html5默认气泡修改的代码详解
Mar 13 #HTML / CSS
You might like
PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明
2011/12/05 PHP
解析PHP正则提取或替换img标记属性
2013/06/26 PHP
php中print(),print_r(),echo()的区别详解
2014/12/01 PHP
详解WordPress开发中wp_title()函数的用法
2016/01/07 PHP
使用PHP处理数据库数据如何将数据返回客户端并显示当前状态
2016/02/16 PHP
PHP抓取淘宝商品的用户晒单评论+图片+搜索商品列表实例
2016/04/14 PHP
php的单例模式及应用场景详解
2021/02/27 PHP
javascript编程起步(第六课)
2007/01/10 Javascript
JavaScript实现两个Table固定表头根据页面大小自行调整
2014/01/03 Javascript
jQuery $命名冲突解决方案汇总
2014/11/13 Javascript
node.js文件上传处理示例
2016/10/27 Javascript
vue.js将unix时间戳转换为自定义时间格式
2017/01/03 Javascript
Node.js 回调函数实例详解
2017/07/06 Javascript
js使用generator函数同步执行ajax任务
2017/09/05 Javascript
vue中的scope使用详解
2017/10/29 Javascript
Nodejs对postgresql基本操作的封装方法
2019/02/20 NodeJs
简单了解JS打开url的方法
2020/02/21 Javascript
javascript实现前端成语点击验证优化
2020/06/24 Javascript
python获得两个数组交集、并集、差集的方法
2015/03/27 Python
Python 使用matplotlib模块模拟掷骰子
2019/08/08 Python
使用Python串口实时显示数据并绘图的例子
2019/12/26 Python
Python的赋值、深拷贝与浅拷贝的区别详解
2020/02/12 Python
详解pytorch tensor和ndarray转换相关总结
2020/09/03 Python
python实现企业微信定时发送文本消息的示例代码
2020/11/24 Python
详解pandas赋值失败问题解决
2020/11/29 Python
德国原装品牌香水、化妆品和手表网站:BRASTY.DE
2016/10/16 全球购物
Bugatchi官方网站:男士服装在线
2019/04/10 全球购物
医院后勤自我鉴定
2013/10/13 职场文书
岗位聘任书范文
2014/03/29 职场文书
《金色的脚印》教后反思
2014/04/23 职场文书
住房租房协议书
2014/08/20 职场文书
酒店管理失职检讨书
2014/09/16 职场文书
调任通知
2015/04/21 职场文书
MySQL中几种插入和批量语句实例详解
2021/09/14 MySQL
Python tensorflow卷积神经Inception V3网络结构
2022/05/06 Python
ConditionalOnProperty配置swagger不生效问题及解决
2022/06/14 Java/Android