一、JS通过navigator可以操作剪切板,这就解决了页面与外挂程序之间进行信息通讯!!!
在控制台中运行:Document.execCommand()这个 API 已弃用,不推荐使用它。
document.execCommand('copy'),返回true
document.execCommand('cut'),返回true
document.execCommand('psate'),返回false,因为读取剪切板涉及用户隐私安全,所以一定要在用户允许的情况下才可以进行操作!!!
【安全限制】
由于用户可能把敏感数据(比如密码)放在剪贴板,允许脚本任意读取会产生安全风险,所以这个 API 的安全限制比较多。
首先,Chrome 浏览器规定,只有 HTTPS 协议的页面才能使用这个 API。不过,开发环境(localhost)允许使用非加密协议。
其次,调用时需要明确获得用户的许可。权限的具体实现使用了 Permissions API ,跟剪贴板相关的有两个权限:clipboard-write(写权限)和 clipboard-read(读权限)。“写权限”自动授予脚本,而“读权限”必须用户明确同意给予。也就是说,写入剪贴板,脚本可以自动完成,但是读取剪贴板时,浏览器会弹出一个对话框,询问用户是否同意读取。
1、写剪切板
navigator.clipboard.writeText('写入的内容');
2、读剪切板(异步读取)
function readClipText(){
var clipPromise = navigator.clipboard.readText();
clipPromise.then(function(clipText){document.getElementById('mess').innerHTML=clipText;});
}
readClipText();
二、通过canvas进行截屏,是js获取动态验证码图片的一种方法
HTML5 <canvas> 元素用于图形的绘制,通过脚本 (通常是JavaScript)来完成.。
Canvas API(画布)是在HTML5中新增的标签用于在网页实时生成图像,并且可以操作图像内容,基本上它是一个可以用JavaScript操作的位图(bitmap)。
<canvas> 标签只是图形容器,您必须使用脚本来绘制图形。你可以通过多种方法使用 canvas 绘制路径,盒、圆、字符以及添加图像。
<!DOCTYPE HTML>
<html>
<body>
<canvas id="myCanvas">your browser does not support the canvas tag </canvas>
<script type="text/javascript">
var canvas=document.getElementById('myCanvas');
var ctx=canvas.getContext('2d');
ctx.fillStyle='#FF0000';
ctx.fillRect(0,0,80,100); //左上角(0,0),宽80,高100
</script>
</body>
</html>
【应用1】在Canvas上画线,使用以下两种方法绘制线条:
moveTo(x,y) 定义线条开始坐标
lineTo(x,y) 定义线条结束坐标
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.moveTo(0,0);
ctx.lineTo(200,100);
ctx.stroke();
【应用2】在Canvas上画线,使用以下方法绘制圆:
arc(x,y,r,start,stop)
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.beginPath();
ctx.arc(95,50,40,0,2*Math.PI);
ctx.stroke();
【应用3】使用 canvas 绘制文本,重要的属性和方法如下:
font - 定义字体
fillText(text,x,y) - 在 canvas 上绘制实心的文本
strokeText(text,x,y) - 在 canvas 上绘制空心的文本
使用 fillText()
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.font="30px Arial";
ctx.fillText("Hello World",10,50);
【应用4】使用 Canvas 绘制 渐变
(1)渐变可以填充在矩形, 圆形, 线条, 文本等等, 各种形状可以自己定义不同的颜色。
以下有两种不同的方式来设置Canvas渐变:
createLinearGradient(x,y,x1,y1) - 创建线条渐变
createRadialGradient(x,y,r,x1,y1,r1) - 创建一个径向/圆渐变
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
// 创建渐变
var grd=ctx.createLinearGradient(0,0,200,0);
grd.addColorStop(0,"red");
grd.addColorStop(1,"white");
// 填充渐变
ctx.fillStyle=grd;
ctx.fillRect(10,10,150,80);
(2)使用使用 createRadialGradient()创建一个径向/圆渐变。使用渐变填充矩形:
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
// 创建渐变
var grd=ctx.createRadialGradient(75,50,5,90,60,100);
grd.addColorStop(0,"red");
grd.addColorStop(1,"white");
// 填充渐变
ctx.fillStyle=grd;
ctx.fillRect(10,10,150,80);
【应用5】使用 Canvas 放置图像
把一幅图像放置到画布上, 使用以下方法:
drawImage(image,x,y)
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
var img=document.getElementById("scream");
ctx.drawImage(img,10,10);
【应用6】实战自动下载【万师访万家验证码图片】——特别说明:画布大小只能使用width='70'; height='26'。使用 style='width:70px; height:26px',得不到正确的结果
<canvas id='myCanvas' width='70' height='26'>your browser does not support the canvas tag</canvas>
img标签中验证码图片<a id='wywA' download='ZZZZ.jpg' href=''><img id='wywImg' src='' \></a>
var img=document.getElementById('validateCodeImg')
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.drawImage(img,0,0); //左上角位置(0,0)
document.getElementById('wywImg').src=c.toDataURL();
var a=document.getElementById('wywA')
a.href=document.getElementById('wywImg').src;
a.click();