全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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);
      });
   })

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

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


# 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小时内与您取得联系。