当前位置:首页 > 日记 > 正文

js实现截图保存功能的代码示例

js实现截图保存功能的代码示例

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

这个问题的解决方案: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);      });   })

这个方案,我已经完全实现了,并在我们项目里使用了。欢迎大家使用,如果有什么问题,可以留言给我。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

相关文章

如何用Excel表格做好财务分析

如何用Excel表格做好财务分析

财务分析,如何用,表格,七步,电脑软件,  企业进行财务分析时,多数都是利用手工计算财务指标,其计算工作量较大。以下是小编为您带来的关于分七步用Excel做好财务分析,希望对您有所帮助。分七步用Excel做好财务分析企业都是按照上级要求计算财…

PS合成万圣节黑夜中恐怖的暗黑魔王

PS合成万圣节黑夜中恐怖的暗黑魔王

万圣节,魔王,黑夜,恐怖,电脑软件,僵尸是恐怖和邪恶的代名词,本期我们将来学习如何使用亮光和阴影来建立一个充满阴森的场景。最终效果1、新建1900px * 1948px,分辨率为150px文件。 2、把素材拖到文档,调整合适的位置,新建色彩平衡调整图层,对素…

PS怎么制作局部放大效果?

PS怎么制作局部放大效果?

局部,效果,电脑软件,PS,运用PS软件,制作局部放大图片,以及气泡效果。 软件名称:Adobe Photoshop 8.0 中文完整绿色破解版软件大小:150.1MB更新时间:2015-11-041、首先打开要处理的图片,选择椭圆选框工具。2、同时按Shift和鼠标左键建立圆形选区。…

随机生成10个不重复的0-100的数字

随机生成10个不重复的0-100的数字

数字,实例,电脑软件,在面试时,面试官问了我一道js题:随机生成一个含有10个元素的数组,且元素为0-100的不重复的整数。当时的第一反应是for循环生成10个数字,但是可能会有重复的情况;进一步思考,需要对生成的数字进行验证才能放到数组里面,但是问题…

tomcat共享多个web应用会话的实现

tomcat共享多个web应用会话的实现

方法,多个,电脑软件,tomcat,web,tomcat共享多个web应用会话的实现方法问题今天有位朋友问了个问题,大致是:tomcat下两个Java web,一个是商城,一个是直播,从商城登录后,再跳转到直播,发现处于非登录状态。解决思路将session抽出来成一个session服务…

Angular2监听页面大小变化的解决方

Angular2监听页面大小变化的解决方

解决方法,大小,页面,电脑软件,一、现象全屏页面中的图表,在很多的时候需要 resize 一把,以适应页面的大小变化二、解决1、引入 :import { Observable } from 'rxjs';2、使用(在nnInit方法中):nnInit() {  // 页面监听  Observable.fromEv…

promise处理多个相互依赖的异步请

promise处理多个相互依赖的异步请

异步请求,多个,实例,相互依赖,电脑软件,在项目中,经常会遇到多个相互依赖的异步请求。如有a,b,c三个ajax请求,b需要依赖a返回的数据,c又需要a和b请求返回的数据。如果采用请求嵌套请求的方式自然是不可取的。导致代码难以维护,如何请求很多。会…

怎么样调出天蓝色清新外景婚片的PS

怎么样调出天蓝色清新外景婚片的PS

教程,天蓝色,外景,快速,电脑软件,  好多童鞋给我抱怨说客片太难转色了,春天的小清新感都转不了,其实并不难,运用好互补色来进行加减色,能很快调整好照片的偏色。以下是小编为您带来的关于快速调出天蓝色清新外景婚片的PS教程,希望对您有所帮助…

excel表格设置数字递增的教程excel

excel表格设置数字递增的教程excel

设置,数字,教程,表格,电脑软件,  Excel表格中的数字递增该如何设置呢?接下来是小编为大家带来的excel表格设置数字递增的教程,供大家参考。excel表格设置数字递增的教程设置数字递增步骤1:比如一个数据,从它下拉做递增数列。将鼠标放在该单…

AI绘制卡通可爱鸡宝宝插画教程

AI绘制卡通可爱鸡宝宝插画教程

教程,绘制,插画,卡通,可爱,AI进阶教程:使用AI绘制可爱的鸡宝宝插画,教程主要介绍了鸡身体部分、鸡的腿部、耳机部分、眼睛部分、鸡冠部分、鸡嘴部分及录音机等部分的制作过程,通过本教程带大家掌握钢笔工具、形状工具、剪切蒙版的使用方法,以…

excel2010无法打开xlsx的解决方法

excel2010无法打开xlsx的解决方法

步骤,解决方法,无法打开,不可用,电脑软件,  excel2010本来就是以xlsx保存的文件,但是却显示无法打开时怎么回事。下面让小编为你带来excel2010无法打开xlsx的解决方法,希望对你有帮助!excel2010无法打开xlsx的解决步骤一、 单击开始菜单,选择…

excel表格打印首尾线不全的解决方

excel表格打印首尾线不全的解决方

解决方法,首尾,不全,表格,电脑软件,  在Excel中打印会遇到各种各样的问题,其中就有首尾线不全的问题,该如何解决呢?接下来是小编为大家带来的excel表格打印首尾线不全的解决方法,供大家参考。excel表格打印首尾线不全的解决方法打印首尾线不…