使用Canvas实现截屏

截屏功能是在实现了右键自定义菜单上做的,上篇

需要用到两个js

html2canvas.js和jquery-xxx.js

右键菜单最终如下:

<div id="menu">
     	<div id="pd" class="menu">页面派单</div>
     	<div id="jp" class="menu"><a id="jpdownload">截屏派单</a></div>
     	<div id="refresh" class="menu"><a id="jpdownload">刷新</a></div>
     	<div  style="display:none"><a id="jphidden">截屏派单下载隐藏域</a></div>
</div>

右键菜单的响应事件:

// 点击menu事件--因该绑定导致第一次点击菜单无效,故注释掉
	 //menu.onclick = function(e) {
		var pd = document.getElementById("pd");
		var jp = document.getElementById("jp");
		var refresh = document.getElementById("refresh");
		var jpdownload = document.getElementById("jpdownload");
		var jphidden = document.getElementById("jphidden");
		pd.onclick = function(e){
			alert("pd");
		}
		refresh.onclick = function(e){
			location.reload();
		};
		// 截屏点击事件
		jp.onclick = function(e){
			// 注意此处参数要使用Body或Div,若整个iframe的<html></html>则无效
			html2canvas(document.getElementById("mainFrame").contentWindow.document.body,{ 
				allowTaint: true, //允许污染
				taintTest: true, //在渲染前测试图片
				useCORS: true, //使用跨域
			    onrendered:function(canvas){
			    	// 将整个页面图片转成Base64位
			          dataURL =canvas.toDataURL("image/png");
			          console.log(dataURL);
			          // 若要点击下载,要使用<a href="xxx.jpg" download="name">,故给截屏属性赋值
			          // 需求是用户点击截屏就开始截屏并自动下载,所以在生成图片并转码赋值后要执行一次点击事件
			          // 但再执行菜单截屏的点击事件会导致该方法进入死循环,故大佬教导,再加一个隐藏的<a>
			          // 即每次点击后将值赋给隐藏的a标签,再执行隐藏的a标签的点击事件,完美解决
			          $('#jphidden').attr( 'href' ,  dataURL ) ;
			          $('#jphidden').attr( 'download' , 'myjobdeer.png' ) ;
			          jphidden.click();
			      },
			      width:320,
			      height:400
			  })
		}
//}

效果

点截屏派单左下角自动下载图片

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值