前几天公司项目里有这样一个需求,把网页的某一部分能够一键截图。这个功能其实就是对人力的一个优化,如果是人为做的话,相信大家都知道怎么做(用截图工具在指定区域截图,然后保存到本地,再上传的服务器上去)。我这个主要就解决这个批量的人力的优化。好,废话不多说了。直接上逻辑和代码。'

这个问题的解决方案:html to canvas to png. 目前有一个这样的插件: html2canvas,
html2canvas($targetElem, {
useCORS: true,
onrendered: function(canvas) {
}
});
这个'$targetElem'就是那个要转换的html, useCORS 用来设置图片是否跨域(如html图片域名和当前网站不是同一个域名,需要设置这个属性), onrendered 是转换完成后执行的方法。
里面有一种情况需要考虑:如果html标签里有svg标签, 目前htm2canvas不支持svg标签。
这个情况下就需要先把svg处理成html2canvas能处理标签。
我这策略是 svg 转换成 canvas ,html2canvas 转换完成,再回复svg。这里我还需要这个插件canvg(svg转canvas)
具体代码如下
var nodesToRecover = [];
var nodesToRemove = [];
var $svgElem = $targetElem.find('svg');
$svgElem.each(function(index, node) {
var parentNode = node.parentNode;
var canvas = document.createElement('canvas');
canvg(canvas, parentNode, {ignoreMouse: true, ignoreAnimation: true});
//将svg转换成canvas
nodesToRecover.push({
parent: parentNode,
child: node
});
parentNode.removeChild(node);
nodesToRemove.push({
parent: parentNode,
child: canvas
});
parentNode.appendChild(canvas);
});
html2canvas($targetElem, {
useCORS: true,
onrendered: function(canvas) {
var base64Image = canvas.toDataURL('image/png').substring(22);
//回复svg
nodesToRemove.forEach(function(pair) {
pair.parent.removeChild(pair.child);
});
nodesToRecover.forEach(function(pair) {
pair.parent.appendChild(pair.child);
});
})
这个方案,我已经完全实现了,并在我们项目里使用了。欢迎大家使用,如果有什么问题,可以留言给我。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# js实现截图
# js实现截图保存图片
# jquery实现截图功能
# JavaScript实现网页截图功能
# 浅析js实现网页截图的两种方式
# 原生js基于canvas实现一个简单的前端截图工具代码实例
# JavaScript实现页面截图3种解决方案
# 原生JS实现简单屏幕截图
# 用JavaScript实现浏览器截图功能的全过程
# 转换成
# 有什么
# 给我
# 我还
# 大家都
# 说了
# 有一种
# 不多
# 我这
# 并在
# 这个问题
# 这样一个
# 欢迎大家
# 不支持
# 怎么做
# 前几天
# 先把
# 一键
# 大家多多
# 再上
相关文章:
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
如何高效完成独享虚拟主机建站?
c++ stringstream用法详解_c++字符串与数字转换利器
如何快速搭建虚拟主机网站?新手必看指南
完全自定义免费建站平台:主题模板在线生成一站式服务
如何快速搭建支持数据库操作的智能建站平台?
如何快速搭建响应式可视化网站?
如何快速搭建安全的FTP站点?
武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?
微课制作网站有哪些,微课网怎么进?
建站DNS解析失败?如何正确配置域名服务器?
建站主机选哪种环境更利于SEO优化?
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
建站VPS能否同时实现高效与安全翻墙?
如何快速生成凡客建站的专业级图册?
Python文件管理规范_工程实践说明【指导】
建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略
如何在IIS中新建站点并配置端口与物理路径?
台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?
建站主机服务器选购指南:轻量应用与VPS配置解析
TestNG的testng.xml配置文件怎么写
表情包在线制作网站免费,表情包怎么弄?
婚礼视频制作网站,学习*后期制作的网站有哪些?
简单实现Android文件上传
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
建站之星代理如何获取技术支持?
如何破解联通资金短缺导致的基站建设难题?
高防服务器租用如何选择配置与防御等级?
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
,想在网上投简历,哪几个网站比较好?
如何快速搭建个人网站并优化SEO?
浅析上传头像示例及其注意事项
公司网站制作价格怎么算,公司办个官网需要多少钱?
建站之星Pro快速搭建教程:模板选择与功能配置指南
如何在阿里云部署织梦网站?
网站制作费用多少钱,一个网站的运营,需要哪些费用?
海南网站制作公司有哪些,海口网是哪家的?
常州企业网站制作公司,全国继续教育网怎么登录?
企业网站制作公司网页,推荐几家专业的天津网站制作公司?
h5在线制作网站电脑版下载,h5网页制作软件?
如何通过IIS搭建网站并配置访问权限?
北京网站制作的公司有哪些,北京白云观官方网站?
如何选购建站域名与空间?自助平台全解析
建站主机类型有哪些?如何正确选型
css网站制作参考文献有哪些,易聊怎么注册?
公司门户网站制作流程,华为官网怎么做?
专业商城网站制作公司有哪些,pi商城官网是哪个?
如何零成本快速生成个人自助网站?
建站VPS推荐:2025年高性能服务器配置指南
*请认真填写需求信息,我们会在24小时内与您取得联系。