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 相关文章推荐
Jquery Ajax学习实例6 向WebService发出请求,返回DataSet(XML) 异步调用
Mar 18 Javascript
基于Jquery实现表格动态分页实现代码
Jun 21 Javascript
jQuery创建DOM元素实例解析
Jan 19 Javascript
AngularJS内置指令
Feb 04 Javascript
js实现动态加载脚本的方法实例汇总
Nov 02 Javascript
详解jQuery Mobile自定义标签
Jan 06 Javascript
JS敏感词过滤代码
Dec 23 Javascript
JavaScript中localStorage对象存储方式实例分析
Jan 12 Javascript
bootstrap基本配置_动力节点Java学院整理
Jul 14 Javascript
基于js中document.cookie全面解析
Sep 14 Javascript
vue-router 组件复用问题详解
Jan 22 Javascript
详解如何使用Node.js实现热重载页面
May 06 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
一个用于网络的工具函数库
2006/10/09 PHP
PHP 超链接 抓取实现代码
2009/06/29 PHP
解析PHP中一些可能会被忽略的问题
2013/06/21 PHP
淘宝ip地址查询类分享(利用淘宝ip库)
2014/01/07 PHP
jquery.ui.progressbar 中文文档
2009/11/26 Javascript
使用js解决由border属性引起的div宽度问题
2013/11/26 Javascript
JavaScript获取表单enctype属性的方法
2015/04/02 Javascript
javascript格式化json显示实例分析
2015/04/21 Javascript
常用javascript表单验证汇总
2020/07/20 Javascript
javascript瀑布流布局实现方法详解
2016/02/17 Javascript
js添加绑定事件的方法
2016/05/15 Javascript
Angular.JS中的指令引用template与指令当做属性详解
2017/03/30 Javascript
微信小程序之获取当前位置经纬度以及地图显示详解
2017/05/09 Javascript
Vue shopCart 组件开发详解
2018/01/26 Javascript
Vue项目中设置背景图片方法
2018/02/21 Javascript
vue webpack打包后图片路径错误的完美解决方法
2018/12/07 Javascript
vue实现的请求服务器端API接口示例
2019/05/25 Javascript
详解JavaScript 浮点数运算的精度问题
2019/07/23 Javascript
JS数组方法join()用法实例分析
2020/01/18 Javascript
vue中对象数组去重的实现
2020/02/06 Javascript
js实现翻牌小游戏
2020/07/31 Javascript
JavaScript TAB栏切换效果的示例
2020/11/05 Javascript
探究Python多进程编程下线程之间变量的共享问题
2015/05/05 Python
Python实现统计文本文件字数的方法
2017/05/05 Python
对Python3中的input函数详解
2018/04/22 Python
无需JS和jQuery代码实现CSS3鼠标浮动放大图片
2016/11/21 HTML / CSS
美国伊甸园兄弟种子公司:Eden Brothers
2018/07/01 全球购物
Ooni英国官网:披萨烤箱
2020/05/31 全球购物
企划主管岗位职责
2013/12/12 职场文书
新闻专业个人求职信
2013/12/19 职场文书
技术合作协议书范本
2014/04/18 职场文书
优秀员工演讲稿
2014/05/19 职场文书
党支部遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
2014年社区宣传工作总结
2014/12/02 职场文书
新学期小学班主任工作计划
2019/06/21 职场文书
详解Vue的sync修饰符
2021/05/15 Vue.js