国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務器之家 - 編程語言 - JavaScript - js教程 - JavaScript實現頁面動態驗證碼的實現示例

JavaScript實現頁面動態驗證碼的實現示例

2022-02-20 17:33人生行者 js教程

這篇文章主要介紹了JavaScript實現頁面動態驗證碼的實現示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

引言:

現在很多在用戶登陸或注冊的時候為了防止程序攻擊,加入了動態驗證的技術,一般是讓用戶輸入隨即生成的驗證碼來實現。我自己寫了一個沒有跟后臺交互的,就在前端驗證,發出來給大家看看。

效果圖:

JavaScript實現頁面動態驗證碼的實現示例

 實現思路:

  • 把數字和字母放到一個數組中,通過隨機的方式取得數組下標,總共取4個組成驗證碼;
  • 把驗證碼渲染出來(一個一個的渲染);
  • 繪制一定數量的干擾線,隨機顏色;
  • 輸入驗證碼,輸入4位以后去驗證,正確顯示鉤,錯誤顯示叉并且刷新驗證碼。

編寫構造函數

文本構造函數

//文字的構造函數
	function Text(o){
		this.x=0,//x坐標
		this.y=0,//y坐標
		this.text="",//內容
		this.font=null;//字體
		this.textAlign=null;//對齊方式
		
		this.init(o);
	}
	
	Text.prototype.init=function(o){
		for(var key in o){
			this[key]=o[key];
		}
	}
	Text.prototype.render=function(context){
		this.ctx=context;
		innerRender(this);
			
		function innerRender(obj){
			var ctx=obj.ctx;
			ctx.save()
			ctx.beginPath();
			ctx.translate(obj.x,obj.y);
			
			if(obj.font){
				ctx.font=obj.font;
			}
			if(obj.textAlign){
				ctx.textAlign=obj.textAlign;
			}
			if(obj.fill){//是否填充
				obj.fillStyle?(ctx.fillStyle=obj.fillStyle):null;
				ctx.fillText(obj.text,0,0);
			}
		 	ctx.restore();
		}
	 	return this;
	}

線段構造函數

 
	//直線的構造
	function Line(ctx,o){
		this.x=0,//x坐標
		this.y=0,//y坐標
		this.startX=0,//開始點x位置
		this.startY=0, //開始點y位置
		this.endX=0,//結束點x位置
		this.endY=0;//結束點y位置
		this.thin=false;//設置變細系數
		this.ctx=ctx;
		
		this.init(o);
	}
	Line.prototype.init=function(o){
		for(var key in o){
			this[key]=o[key];
		}
	}
	Line.prototype.render=function(){
		innerRender(this);
		
		function innerRender(obj){
			var ctx=obj.ctx;
			ctx.save()
			ctx.beginPath();
			ctx.translate(obj.x,obj.y);
			if(obj.thin){
				ctx.translate(0.5,0.5);
			}
			if(obj.lineWidth){//設定線寬
				ctx.lineWidth=obj.lineWidth;
			}
			if(obj.strokeStyle){
				ctx.strokeStyle=obj.strokeStyle;
			}
			//劃線
		 	ctx.moveTo(obj.startX, obj.startY);
		 	ctx.lineTo(obj.endX, obj.endY);
		 	ctx.stroke();
		 	ctx.restore();
		}
	 	
	 	return this;
	}

按長度獲取驗證碼

	//根據指定長度生成隨機字母數字
	Verifiable.prototype.randomWord=function(range){
	 var str = "",pos,
	   arr = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"];
	 for(var i=0; i<range; i++){
	  pos = Math.round(Math.random() * (arr.length-1));
	  str += arr[pos];
	 }
	 return str;
	}

繪制文字

	//繪制文字
	Verifiable.prototype.drawText=function(){
		var that=this;
		var count = 4;//文字個數
		var textW = 40;//文字所占寬
		var code=this.code = this.randomWord(count);
		var codeArr = code.split("");
		var text,x ;
		codeArr.forEach(function(c,i){
			x = that.w/count*i+textW/2;
			//繪制文字
			text = new Text({
				x:x,
				y:textW-10,
				text:c,
				font:"30px ans-serif",
				textAlign:"center",
				fill:true,
				fillStyle:"#412D6A"
			});
			that.renderArr.push(text);
		})		
	}

此時效果:

JavaScript實現頁面動態驗證碼的實現示例

繪制干擾線

//繪制干擾線
	Verifiable.prototype.interfering=function(){
		var count = this.lineCount=20,line,ctx=this.ctx;
		var startX,
			startY,
			endX,
			endY,
			color;
			
		for(var i=0;i<count;i++){
			//隨機開始坐標,結束坐標、顏色
			startX = _.getRandom(0,140);
			startY = _.getRandom(0,40);
			endX = _.getRandom(0,140);
			endY = _.getRandom(0,40);
			color = _.getRandomColor();
			//定義一條直線
			line = new Line(ctx,{
				x:0,
				y:0,
			 	startX:startX,
			 	startY:startY,
			 	endX:endX,
			 	endY:endY,
			 	strokeStyle:color
			})
			
			this.renderArr.push(line);
		}
	}

此時效果如下:

JavaScript實現頁面動態驗證碼的實現示例

加入頁面布局

<!DOCTYPE html>
<html lang="zh">
 
<head>
  <meta charset="UTF-8">
  <title>verifiable</title>
  <style>
   #box{
		width:140px;
		height:40px;
		position:absolute;
		
	}
	#inputDiv{
		width:220px;
		position:absolute;
		margin:0 auto;
		left:0;
		top:30px;
		right:0;
		bottom:0;
	}
	#container{
		width:220px;
		height:60px;
		position:absolute;
		margin:0 auto;
		left:0;
		top:60px;
		right:0;
		bottom:0;
	}
	.refresh{
		position:absolute;
		left:140px;
	}
  </style>
</head>
 
<body>
	<div id="inputDiv">
  	驗證碼:<input size=10 id="codeInput"><img id="stateImg" style="vertical-align: middle;width:20px"></img>
  </div>
  <div id="container">
  	<div id="box"></div>
  	<a href="javascript:void 0" class="refresh" onclick="refresh()">換一張</a>
  </div>
</body>
	<script type="text/javascript" src="verifiable.js"></script>
  <script type="text/javascript">
 	var box = document.getElementById("box");
 	var stateImg = document.getElementById("stateImg");
 	var codeInput = document.getElementById("codeInput");
 	
	verifiable.init(box,codeInput,stateImg);
	
	//換一張
	function refresh(){
		verifiable.renderArr.length=0;
		verifiable.draw();
	}
  </script>
</html>

加入輸入框事件

	//輸入框事件
	Verifiable.prototype.inputValid=function(input){
		var val = input.value;
		if(val.length<4) return ;
		
		if(this.code==val){
			console.log("suc");
			this.result(0);
		}else{
			this.result(1);
		}
	}

加入成功、失敗驗證

//處理結果
	Verifiable.prototype.result=function(result){
		var codeInput = this.codeInput;
		var stateImg = this.stateImg;
		if(result==0){//成功
			stateImg.src="./images/suc.jpeg";
			codeInput.readOnly=true;
		}else {//失敗
			codeInput.readOnly=false;
			stateImg.src="./images/fail.jpeg";
			this.renderArr.length=0;
			this.draw();
		}
	}

完成

JavaScript實現頁面動態驗證碼的實現示例

 代碼下載

到此這篇關于JavaScript實現頁面動態驗證碼的實現示例的文章就介紹到這了,更多相關JavaScript 動態驗證碼內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/dkm123456/article/details/114990229

延伸 · 閱讀

精彩推薦
  • js教程JS中循環遍歷數組的四種方式總結

    JS中循環遍歷數組的四種方式總結

    這篇文章主要給大家總結介紹了關于JS中循環遍歷數組的四種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,...

    前端小混混5492022-01-06
  • js教程微信小程序全局狀態的深入講解

    微信小程序全局狀態的深入講解

    這篇文章主要介紹了微信小程序全局狀態的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們...

    明月依舊9442022-02-17
  • js教程js利用cookie實現記住用戶頁面操作

    js利用cookie實現記住用戶頁面操作

    這篇文章主要給大家介紹了關于js利用cookie實現記住用戶頁面操作的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考...

    一起隨緣4232022-02-17
  • js教程基于 Next.js 的 SSR/SSG 方案了解一下?

    基于 Next.js 的 SSR/SSG 方案了解一下?

    服務端渲染(SSR,Server Side Render)與客戶端渲染(CSR,Client Side Render)的核心區分點簡單來說就是完整的 HTML 文檔在服務端還是瀏覽器里組裝完成。...

    DYBOY4812021-12-27
  • js教程three.js如何實現3D動態文字效果

    three.js如何實現3D動態文字效果

    這篇文章主要給大家介紹了關于three.js如何實現3D動態文字效果的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習...

    alphardex9982022-01-25
  • js教程JavaScript數據結構之雙向鏈表

    JavaScript數據結構之雙向鏈表

    這篇文章主要為大家詳細介紹了JavaScript數據結構之雙向鏈表,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    希魔王的塔羅牌7872022-02-13
  • js教程JavaScript 數組遍歷的五種方法

    JavaScript 數組遍歷的五種方法

    這篇文章主要介紹了JavaScript 數組遍歷的五種方法,幫助大家更好的理解和學習使用JavaScript,感興趣的朋友可以了解下...

    拾階求上4042022-02-15
  • js教程JavaScript實現點擊切換驗證碼及校驗

    JavaScript實現點擊切換驗證碼及校驗

    這篇文章主要為大家詳細介紹了JavaScript實現點擊切換驗證碼及校驗,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    棟棟很優秀啊3842021-12-29
主站蜘蛛池模板: 91免费在线播放 | 久久久久久91香蕉国产 | 求av网址 | 成人免费xxx在线观看 | 婷婷久久久 | 啵啵羞羞影院 | 亚洲国产区 | 亚洲一区在线视频 | 免费日韩 | 精品少妇一区二区三区日产乱码 | 成人网av | 国产精品视频免费观看 | 一区二区在线免费观看 | 久久久久国产精品免费免费搜索 | 亚洲精品久久 | 一区在线播放 | 国产精品福利视频 | 一级电影在线观看 | 亚洲精品一区二区三区四区高清 | 亚洲福利 | 国产成人久久精品一区二区三区 | 欧美激情精品久久久久久变态 | 国产97人人超碰caoprom | 互换娇妻呻吟hd中文字幕 | 国产高清一区 | 羞羞羞网站 | 久久小视频 | 日韩看片 | 免费观看一级特黄欧美大片 | 日韩在线免费电影 | 亚洲天堂av网 | 亚洲精品午夜 | 亚洲欧美在线一区 | 综合自拍偷拍 | 免费观看污污视频 | 国产精品一区二区三区在线播放 | 中文字幕日本一区二区 | 久久国产精品一区 | 一区视频在线 | 91视频免费看 | aaa级黄色 |