JS中使用cavas截图网页并解决跨域及模糊问题


Posted in Javascript onNovember 13, 2018

前几天给了个需求对浏览器网页进行截图,把网页统计数据图形表等截图保存至用户本地。

首先对于网页截图,我用的是canvas实现,获取你需要截图的模块的div,从而使用canvas对你需要的模块进行截图。

我们先来引入canvas的js文件,js文件获取地址官网主页:http://html2canvas.hertzen.com/

<script type="text/javascript" src="js/html2canvas.js"></script>
<script type="text/javascript" src="js/html2canvas.min.js"></script>

div按钮代码

<div><a id="down" href="" download=" rel="external nofollow" downImg">下载按钮</a></div>
//href用来取到值 要写个空 down load是下载图片出来的名称

jsp代码

function test() {

 var canvas2 = document.createElement("canvas");    


 //创建一个新的canvas
  let _canvas = document.querySelector('#dijit__TemplatedMixin_0');

  //这里面填写 你需要截图的div
  var w = parseInt(window.getComputedStyle(_canvas).width);

  var h = parseInt(window.getComputedStyle(_canvas).height); 
  canvas2.width = w * 2;
  canvas2.height = h * 2;






//将canvas画布放大2倍或者更多,然后盛放在较小的容器内,就显得不模糊了
  canvas2.style.width = w + "px";
  canvas2.style.height = h + "px";       
  var context = canvas2.getContext("2d");
  context.scale(2, 2);       //指图片偏移
  html2canvas(document.querySelector('#dijit__TemplatedMixin_0'), {  
//写需要截图的div    
   taintTest : false,  
   useCORS : true,   
   allowTaint :false, 
//这三串代码解决跨域问题  

   canvas : canvas2
  }).then(
    function(canvas) {
     document.querySelector("#down").setAttribute('href',canvas.toDataURL());


//down设置为你的点击键
    });
window.onload = test;

截图出来后,由于我的网址上有百度地图的api,地图图片等等一些东西,用canvas网页进行截图是就会发现所有图片的地方都是空白。这就是因为跨域。

来讲一下跨域问题,我举个例子说明这个跨域,比如我的网页里面有的图片不是来自于自己的服务器。那么,这张图片就和这个网页不是同域,那么html2canvas就无法对这种图片进行截图,如果你的网站的所有图片都放在单独的图片服务器上,那么用html2canvas对整个网页进行截图是就会发现所有图片的地方都是空白。

跨域问题网上好多大佬说用代理服务器来解决,但是感觉太麻烦,后来我使用了小段代码就OK了。

taintTest : false,  
useCORS : true,   
allowTaint :false, 
//注:useCORS:true和allowTaint:true 这两个都是来解决跨域问题的,但是并不可以一起使用,如果同时使用会出现错误。

对于截图模糊就调整canvas画布大小比如我上面写的*2,画布调大,容器小,截图自然就清楚了

截图成功呈现

总结

以上所述是小编给大家介绍的JS中使用cavas截取网页并解决跨区及模糊问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
一句话JavaScript表单验证代码
Aug 02 Javascript
来自国外的14个图片放大编辑的jQuery插件整理
Oct 20 Javascript
javascript数组去重的六种方法汇总
Aug 16 Javascript
JavaScript使用DeviceOne开发实战(四)仿优酷视频应用
Dec 02 Javascript
jquery mobile 移动web(5)
Dec 20 Javascript
jquery实现具有嵌套功能的选项卡
Feb 12 Javascript
jQuery实现大图轮播
Feb 13 Javascript
详解Angular2组件之间如何通信
Jun 22 Javascript
JavaScript方法_动力节点Java学院整理
Jun 28 Javascript
基于JavaScript实现无缝滚动效果
Jul 21 Javascript
JavaScript事件委托原理与用法实例分析
Jun 07 Javascript
深入解析微信小程序开发中遇到的几个小问题
Jul 11 Javascript
详解如何用typescript开发koa2的二三事
Nov 13 #Javascript
详解koa2学习中使用 async 、await、promise解决异步的问题
Nov 13 #Javascript
koa源码中promise的解读
Nov 13 #Javascript
vue-router传递参数的几种方式实例详解
Nov 13 #Javascript
vue-router的使用方法及含参数的配置方法
Nov 13 #Javascript
webpack 从指定入口文件中提取公共文件的方法
Nov 13 #Javascript
详解Vue实战指南之依赖注入(provide/inject)
Nov 13 #Javascript
You might like
php sprintf()函数让你的sql操作更安全
2008/07/23 PHP
PHP三元运算符的结合性介绍
2012/01/10 PHP
php addslashes及其他清除空格的方法是不安全的
2012/01/25 PHP
Codeigniter中mkdir创建目录遇到权限问题和解决方法
2014/07/25 PHP
Zend Framework教程之连接数据库并执行增删查的方法(附demo源码下载)
2016/03/21 PHP
zend framework重定向方法小结
2016/05/28 PHP
PHP Header用于页面跳转时的几个注意事项
2016/10/21 PHP
flash 得到自身url参数的代码
2009/11/15 Javascript
JavaScript中读取和保存文件实例
2014/05/08 Javascript
jQuery中select与datalist制作下拉菜单时的区别浅析
2016/12/30 Javascript
微信小程序 页面之间传参实例详解
2017/01/13 Javascript
详解vue跨组件通信的几种方法
2017/06/15 Javascript
详解JS构造函数中this和return
2017/09/16 Javascript
vue实现点击展开点击收起效果
2018/04/27 Javascript
mpvue开发音频类小程序踩坑和建议详解
2019/03/12 Javascript
微信提示 在浏览器打开 效果实现过程解析
2019/09/10 Javascript
Vue v-model组件封装(类似弹窗组件)
2020/01/08 Javascript
Python获取央视节目单的实现代码
2015/07/25 Python
Python下的常用下载安装工具pip的安装方法
2015/11/13 Python
Python 从相对路径下import的方法
2018/12/04 Python
用Python中的turtle模块画图两只小羊方法
2019/04/09 Python
在python中做正态性检验示例
2019/12/09 Python
Python gevent协程切换实现详解
2020/09/14 Python
linux系统下pip升级报错的解决方法
2021/01/31 Python
一款纯css3实现的竖形二级导航的实例教程
2014/12/11 HTML / CSS
eBay法国购物网站:eBay.fr
2017/10/21 全球购物
英国家电购物网站:Sonic Direct
2019/03/26 全球购物
德国二手设计师时装和复古时装跳蚤市场:Mädchenflohmarkt
2020/11/09 全球购物
J2EE包括哪些技术
2016/11/25 面试题
大学生就业意向书范文
2014/04/01 职场文书
公司贷款承诺书
2014/05/30 职场文书
工地例会施工汇报材料
2014/08/22 职场文书
公司法人授权委托书范本
2014/09/12 职场文书
婚前协议书范本两则
2014/10/16 职场文书
小学教育见习总结
2015/06/23 职场文书
2016元旦主持人经典开场白台词
2015/12/03 职场文书