精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

HarmonyOS 實現一個滑塊驗證

系統 OpenHarmony
本篇文章我來嘗試著實現一個滑動驗證碼。當然,這種驗證碼一般都是第三方來處理的,因為它不僅僅只是滑動,還會判斷用戶的拖放軌跡是否符合真實用戶的行為特征,所以我只是簡單的實現。

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

??https://ost.51cto.com??

前言

日常我們經常能見到驗證碼,網站上的驗證碼的作用是保護網站安全,一般網站都要通過驗證碼來防止機器大規模注冊等危害。一般驗證碼有:圖像驗證、算數驗證、滑動驗證等。有些驗證碼驗證起來有些麻煩,對我來說,最方便的驗證方式是滑動滑塊驗證,滑塊驗證的使用體驗非常好。

所以本篇文章我來嘗試著實現一個滑動驗證碼。當然,這種驗證碼一般都是第三方來處理的,因為它不僅僅只是滑動,還會判斷用戶的拖放軌跡是否符合真實用戶的行為特征,所以我只是簡單的實現。

介紹

這是一個滑塊驗證碼,用戶只需要將滑塊滑到最右側,即可判斷用戶是否驗證成功。

效果展示

我為滑塊驗證添加了驗證條件,用戶可以對滑塊速度做限制,例如:滑塊滑倒右側時,平均速度小于3,如果用戶滑動速度大于3時,就驗證失敗。

#夏日挑戰賽# HarmonyOS 實現一個滑塊驗證-開源基礎軟件社區

我一共滑動了三次:

  • 第一次:沒有滑倒最右側,認證失敗。
  • 第二次:滑動的速度太塊,認證失敗。
  • 第三次:滑動速度符合限制,認證成功。

使用

1、參數支持

參數名稱

參數描述

參數類型

默認值

width

滑塊寬度

Number

300

height

滑塊高度

Number

50

limit

滑塊的速率限制

Number

4

2、事件支持

事件名稱

事件描述

getMsg

驗證通過或不通過事件

用戶可以設置限制體速率,可以通過自定義事件getMsg,獲取到驗證的結果。

#夏日挑戰賽# HarmonyOS 實現一個滑塊驗證-開源基礎軟件社區

原理分析

1、滑動原理

首先,我們需要在組件加載完成時,獲取到滑塊可以滑動的最大距離,我們用得到的最大距離,來判斷滑塊是否滑倒最右側

注意組件的生命周期,在自定義組件中,是沒有onShow的,需要用onLayoutReady(),這個鉤子函數是自定義組件布局完成調用的。

然后,在觸摸屏幕事件中,獲取觸摸的X坐標,此坐標為起始點;在觸摸移動事件中,獲取最新的X坐標,再減去起始坐標,就能得到偏移量。

最后,判斷偏移量是否大于滑塊可以滑動的最大距離,如果不大于,將偏移量設置為滑塊的滑動距離。

為了更好理解,我把滑塊隱藏部分顯示出來。

#夏日挑戰賽# HarmonyOS 實現一個滑塊驗證-開源基礎軟件社區

touchstart (e) {
//設置X軸的始點
this.startPositionX = e.touches[0].localX;
this.startTime = 0
this.s = 0
this.num = 0
},
//滑塊移動中執行的事件
touchmove (e) {
const offsetX = e.touches[0].localX - this.startPositionX
// 如果驗證成功后仍允許滑動,則執行下面代碼塊(初始值默認為允許)
if (this.isSlide) {
//當x坐標大于最大可移動距離,那么當前x坐標即為最大可移動距離
if (offsetX >= this.max) {
this.x = this.max
} else {
// 將當前鼠標x坐標給滑塊移動的距離
this.x = offsetX;
}
}
},

2、驗證原理

這里的驗證不嚴謹,只是一個小嘗試。

驗證原理主要是通過滑動的平均速度來判斷的,如果用戶滑動速度超過設定速度,則驗證失敗。

所以我們需要使用到時間戳。

第一步,我們在移動事件一開始,獲取到當前的時間戳;在移動事件結束將當前時間戳賦值給上一個時間,這樣通過當前時間戳 -上一個時間就能獲取到時間間隔。

第二步,我們還需要獲取到偏移量,上面滑動原理已經介紹了如何獲取。

第三步,有了時間間隔和偏移量,我們可以計算出本次滑動的速度,再利用總的滑動次數來獲取到平均速度。

最后,我們只需要在touchend事件中做判斷,判斷滑塊是否到達滑動的最大距離,并且滑塊滑動的平均速度是否符合限制。

touchmove (e) {
const offsetX = e.touches[0].localX - this.startPositionX
const currTime = Date.now()
if (this.startTime !== 0) {
const duration = currTime - this.startTime
// 傳入倒數第二個點和最后一個點,和持續時間,會返回加速度
const v = parseInt(offsetX / duration)
this.num++
this.s = this.s + v
}
this.startTime = currTime
// 如果驗證成功后仍允許滑動,則執行下面代碼塊(初始值默認為允許)
if (this.isSlide) {
//當x坐標大于最大可移動距離,那么當前x坐標即為最大可移動距離
if (offsetX >= this.max) {
this.x = this.max
} else {
// 將當前鼠標x坐標給滑塊移動的距離
this.x = offsetX;
}
}
},
//松開滑塊執行的事件
touchend (e) {
// 計算平均速度
const avg = this.s / this.num
console.log(avg)
//自定義組件觸發事件時提供的data對象
var data = {};
//如果觸摸的X軸坐標大于等于限定的可移動范圍,并且滑動的平均速度不能超過100,則驗證成功
if (this.x == this.max && avg < this.limit) {
//設置驗證成功提示語
this.status = '驗證成功';
//設置data對象的返回值
data.msg = true;
//驗證成功后,禁止滑塊滑動
this.isSlide = false;
} else {
//元素X軸坐標歸0
this.x = 0;
//清空驗證成功提示語
this.status = '';
this.tip = '驗證失敗'
//設置data對象的返回值
data.msg = false;
}
this.$emit('getMsg', data)
}

完整代碼

index.js:

// @ts-nocheck
export default{
data:{
tip: '右滑驗證',
x: 0,//X軸的初始值
startPositionX: 0,//觸摸時X軸的值
max: 0,//滑塊可移動的X軸范圍
status: '',//驗證完后的提示信息
isSlide: true,//是否允許驗證成功后繼續滑動
positionList: {}, // 存儲坐標位置
startTime: 0,
num: 0, // 總次數
s: 0 // 速度之和
},
props: {
limit: {
type: Number,
default: 4
},
width: {
type: Number,
default: 400
},
height: {
type: Number,
default: 100
}
},
onLayoutReady(){
let ball = this.$element("ball")
let box = this.$refs.container
// 滑塊可以移動的最大距離
this.max = box.getBoundingClientRect().width - ball.getBoundingClientRect().width
},
touchstart (e) {
//設置X軸的始點
this.startPositionX = e.touches[0].localX;
this.startTime = 0
this.s = 0
this.num = 0
},
//滑塊移動中執行的事件
touchmove (e) {
const offsetX = e.touches[0].localX - this.startPositionX
const currTime = Date.now()
if (this.startTime !== 0) {
const duration = currTime - this.startTime
// 傳入倒數第二個點和最后一個點,和持續時間,會返回加速度
const v = parseInt(offsetX / duration)
this.num++
this.s = this.s + v
}
this.startTime = currTime
// 如果驗證成功后仍允許滑動,則執行下面代碼塊(初始值默認為允許)
if (this.isSlide) {
//當x坐標大于最大可移動距離,那么當前x坐標即為最大可移動距離
if (offsetX >= this.max) {
this.x = this.max
} else {
// 將當前鼠標x坐標給滑塊移動的距離
this.x = offsetX;
}
}
},
//松開滑塊執行的事件
touchend (e) {
// 計算平均速度
const avg = this.s / this.num
//自定義組件觸發事件時提供的data對象
var msg = {};
//如果觸摸的X軸坐標大于等于限定的可移動范圍,并且滑動的平均速度不能超過100,則驗證成功
if (this.x == this.max && avg < this.limit) {
//設置驗證成功提示語
this.status = '驗證成功';
//設置data對象的返回值
msg = true;
//驗證成功后,禁止滑塊滑動
this.isSlide = false;
} else {
//元素X軸坐標歸0
this.x = 0;
//清空驗證成功提示語
this.status = '';
this.tip = '驗證失敗'
//設置data對象的返回值
msg = false;
}
this.$emit('getMsg', msg)
}
}

總結

不足點:驗證條件比較簡單。

文章相關附件可以點擊下面的原文鏈接前往下載:

https://ost.51cto.com/resource/2234。

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

??https://ost.51cto.com??。

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2022-07-13 15:31:29

手繪板canvas鴻蒙

2022-07-28 14:20:44

懸浮球鴻蒙

2020-12-20 10:07:57

Canvas圖形驗證碼javascript

2022-08-01 14:07:26

canvas繪畫板

2021-09-07 07:34:42

CSS 技巧代碼重構

2020-09-24 11:46:03

Promise

2017-12-12 15:24:32

Web Server單線程實現

2022-01-04 11:08:02

實現Localcache存儲

2014-04-14 15:54:00

print()Web服務器

2023-09-22 11:51:13

PythonFlask

2022-08-05 19:27:22

通用API鴻蒙

2023-02-26 01:37:57

goORM代碼

2011-03-28 09:56:03

存儲增刪操作

2023-05-22 09:10:53

CSSloading 效

2023-03-01 09:39:40

調度系統

2024-12-06 09:58:09

2025-05-20 08:00:00

鏈式調用異步

2022-11-29 17:34:43

虛擬形象系統

2022-05-13 07:42:25

JS編程題LazyMan

2020-08-17 08:20:16

iOSAOP框架
點贊
收藏

51CTO技術棧公眾號

日本久久久久久久久久久| 国产视频在线观看一区二区| 粉嫩av一区二区三区天美传媒| 99热这里只有精品66| 狠狠入ady亚洲精品经典电影| 亚洲精品美女在线观看| 天天干在线影院| 色女人在线视频| 久久久国产精品午夜一区ai换脸| 91视频九色网站| 久久久久99精品成人片三人毛片| 日本a口亚洲| 亚洲国产精彩中文乱码av在线播放| 国产男女激情视频| 手机在线免费看av| 国产日韩欧美不卡| 成人区精品一区二区| 久久久久亚洲视频| 精品动漫3d一区二区三区免费| 亚洲男人天堂手机在线| 亚洲精品国产久| 亚洲女同志freevdieo| 亚洲青青青在线视频| 久久久一本精品99久久精品| 国产jzjzjz丝袜老师水多| 亚洲女同同性videoxma| 欧美精品在线免费| 超碰人人人人人人人| 欧美成人午夜77777| 51精品久久久久久久蜜臀| 男人操女人免费软件| 婷婷在线播放| 日韩一区中文字幕| 欧美日韩在线一二三| 欧美在线 | 亚洲| 国产精品一区二区三区乱码| 国产精品日韩av| 一区二区三区福利视频| 亚洲美女色禁图| 欧美国产高跟鞋裸体秀xxxhd| 福利视频第一页| 欧洲杯什么时候开赛| 日韩高清中文字幕| 欧美熟妇精品一区二区| 国产aa精品| 欧美久久一二区| 午夜两性免费视频| 88xx成人网| 欧美制服丝袜第一页| 欧在线一二三四区| 2022成人影院| 色综合天天综合在线视频| heyzo亚洲| 日本а中文在线天堂| 亚洲国产sm捆绑调教视频| 国产在线视频在线| 欧美wwww| 午夜精品一区二区三区免费视频 | 国产在线色视频| 99久久精品国产一区| 99热在线播放| 秋霞网一区二区| 北条麻妃一区二区三区| 黄色99视频| 日韩精品福利| 国产欧美日韩精品在线| 午夜精品一区二区在线观看的| 成年在线电影| 国产精品第一页第二页第三页| 亚洲欧洲一区二区| 欧美精品日韩少妇| 亚洲欧美另类在线| 奇米影视亚洲色图| 国产高清不卡| 欧美日韩在线播放三区| 国产成人美女视频| 亚洲伊人影院| 日韩av在线资源| 精品无码在线观看| 一区二区三区午夜视频| 久久久久久久久网站| av资源免费观看| 青青草成人在线观看| 成人免费视频网| 人人妻人人玩人人澡人人爽| 久久麻豆一区二区| 中文字幕一区二区三区在线乱码| 91精品久久| 欧美性xxxxxxxxx| 8x8x成人免费视频| 视频二区欧美| 亚洲视频欧洲视频| 永久久久久久久| 国产乱码精品| 国产在线日韩在线| 人妻一区二区三区四区| 国产精品免费视频观看| www.欧美黄色| 日韩av电影资源网| 日韩精品最新网址| 久久亚洲无码视频| 欧美人成在线| 国产精品视频地址| 黄片毛片在线看| 国产女人18毛片水真多成人如厕| 日韩中文字幕在线不卡| 欧美成人黑人| 日韩女优av电影| 欧美午夜激情影院| 亚洲精品欧洲| 91在线免费观看网站| 人操人视频在线观看| 自拍偷在线精品自拍偷无码专区| 亚洲欧洲日产国码无码久久99| 亚洲精品三区| 亚洲人成自拍网站| 国产精品不卡av| 麻豆传媒一区二区三区| 欧美成人在线免费观看| 麻豆av在线播放| 欧美二区三区的天堂| 精品人妻无码一区| 亚洲国产专区| 97久久夜色精品国产九色| av大片在线看| 色偷偷久久一区二区三区| 无码人妻一区二区三区在线| 亚洲精品在线观看91| 国产精品激情自拍| 瑟瑟在线观看| 亚洲成人动漫精品| 又黄又爽又色的视频| 日韩免费在线| 国产精品狠色婷| 免费在线一级视频| 黑人巨大精品欧美一区二区三区 | 色综合久综合久久综合久鬼88 | 日本一区二区电影| 日韩成人在线视频| 日本一二三区视频| 成人小视频在线观看| 一二三四中文字幕| 国内精品视频| 欧美精品日韩www.p站| 国产永久免费视频| 亚洲欧美在线另类| 亚洲欧美aaa| 国产精品99一区二区三| 国产精品视频白浆免费视频| 成年在线观看免费人视频| 一本久久a久久免费精品不卡| 国产激情视频网站| 国产一区二区高清| 另类小说综合网| 欧美自拍电影| 国产亚洲视频在线观看| 欧美 亚洲 另类 激情 另类| 亚洲国产精品二十页| 蜜桃免费在线视频| 99re6这里只有精品| 国产欧美精品日韩| 国产在线1区| 日韩一级免费一区| 国产在线综合网| 91在线看国产| 日韩有码免费视频| 99视频精品全国免费| 91综合免费在线| 午夜伦理在线视频| 亚洲电影免费观看| 综合激情网五月| 国产精品美女久久久久久久久| 自拍偷拍21p| 午夜精品国产| 久久av一区二区三区漫画| 综合另类专区| 日韩有码片在线观看| 99精品视频免费看| 午夜电影一区二区三区| www亚洲色图| 韩日av一区二区| 成人性生活视频免费看| 国产一区二区三区91| 成人性生交大片免费看视频直播| 黄色网址在线免费| 亚洲国产精品热久久| 午夜精品免费观看| 亚洲乱码国产乱码精品精可以看| 艳妇乳肉豪妇荡乳xxx| 日本伊人色综合网| 黄色www在线观看| 精品少妇一区| 国产日韩欧美黄色| 国产在线天堂www网在线观看| 国产亚洲激情视频在线| 国产喷水吹潮视频www| 精品福利樱桃av导航| 国产精品免费在线视频| 成人看片黄a免费看在线| 欧美精品aaaa| 国产精品二区影院| 日韩亚洲一区在线播放| 伊色综合久久之综合久久| 日本高清不卡的在线| 高潮毛片在线观看| 亚洲精品自拍偷拍| a级片免费视频| 91搞黄在线观看| 国产精品a成v人在线播放| 国产精品美女一区二区三区 | 91视频精品| 激情欧美一区二区三区中文字幕| 亚洲午夜国产成人| 日本久久91av| 高潮在线视频| 欧美大片在线免费观看| 在线免费av电影| 精品视频久久久| www香蕉视频| 7777精品伊人久久久大香线蕉| 人妻 日韩精品 中文字幕| 亚洲最大的成人av| www.5588.com毛片| 国产精品乱子久久久久| 欧美特黄一区二区三区| 岛国av在线一区| 少妇丰满尤物大尺度写真| 久久国产夜色精品鲁鲁99| 大香煮伊手机一区| 一级成人国产| xxxx18hd亚洲hd捆绑| 国产精品九九| 日韩中文在线字幕| 围产精品久久久久久久| 日产国产精品精品a∨| 亚洲影院天堂中文av色| 精品国产一二| 久久草在线视频| 国产亚洲精品久久飘花| 一区二区三区在线资源| 91久久偷偷做嫩草影院| 看亚洲a级一级毛片| 成人福利视频网| 国产电影一区二区| 91丨九色丨国产在线| 伊人久久精品| 96pao国产成视频永久免费| 四虎国产精品成人免费影视| 国产欧美日韩最新| 亚洲日本中文| 91在线免费看片| 91麻豆精品激情在线观看最新| 成人av免费在线看| 亚洲1区在线| 国产欧美一区二区视频| 青青草原在线亚洲| 日韩av大全| 欧美hd在线| 红桃一区二区三区| 激情视频一区| 久久久久狠狠高潮亚洲精品| 天堂av在线一区| 成年人网站大全| 六月丁香婷婷色狠狠久久| 在线免费看污网站| 成人在线视频一区二区| 漂亮人妻被黑人久久精品| 91一区二区三区在线观看| 精品人妻无码一区二区三区换脸| 欧美韩日一区二区三区| 99re6热在线精品视频| 一区二区在线观看免费| 国产成人无码精品亚洲| 色婷婷综合五月| 一区二区视频网| 日韩欧美亚洲国产精品字幕久久久 | 五月婷六月丁香| 亚洲精品视频一区| 亚洲精品视频在线观看免费视频| 一本色道久久综合亚洲91 | 久久99精品久久久久久动态图| 手机在线免费毛片| 99精品久久只有精品| av片在线免费看| 亚洲国产精品天堂| 日韩精品在线一区二区三区| 日韩亚洲欧美中文三级| 日韩大胆人体| 久99九色视频在线观看| 中文字幕在线官网| 91系列在线播放| 天堂av一区二区三区在线播放| 亚洲美女搞黄| 亚洲精选91| 性欧美1819| 99久久精品免费看国产| 女教师淫辱の教室蜜臀av软件| 一区二区免费视频| 中文在线免费观看| 欧美精品一区二区精品网| 波多野结衣在线影院| 欧美激情精品在线| 国产精品99久久久久久董美香| 国产精品加勒比| 色中色综合网| 欧美三级在线观看视频| 国产在线麻豆精品观看| www.av欧美| 亚洲第一福利一区| 91精东传媒理伦片在线观看| 日韩精品福利在线| 最近中文字幕免费mv2018在线| 国产成人中文字幕| 成人爽a毛片免费啪啪红桃视频| 在线观看日本一区| 久久亚洲欧美| 91av在线免费| 亚洲一线二线三线视频| 国产精品九九九九| 一本色道久久综合亚洲精品小说 | 精精国产xxxx视频在线中文版| 国产福利精品视频| 成人av综合网| 日韩不卡一二区| 美女网站在线免费欧美精品| 亚洲成人网在线播放| 精品动漫一区二区三区| 性猛交xxxx乱大交孕妇印度| xxxxx成人.com| jvid一区二区三区| 日韩久久不卡| 日日夜夜一区二区| 波多野结衣 在线| 日韩欧美有码在线| 香蕉久久国产av一区二区| 欧美激情精品在线| 91精品国产自产在线丝袜啪| 男同互操gay射视频在线看| 免费在线观看日韩欧美| 亚洲毛片亚洲毛片亚洲毛片| 在线精品亚洲一区二区不卡| 嫩草在线播放| 日本亚洲欧美三级| 亚洲第一论坛sis| 日本xxxxxxx免费视频| 久久日韩精品一区二区五区| av黄色在线看| 亚洲美女av在线| 一二区成人影院电影网| 亚洲蜜桃在线| 狠狠色丁香婷综合久久| 成人一级黄色大片| 欧美一区二区三区精品| 少女频道在线观看免费播放电视剧| 亚洲xxx自由成熟| 午夜精品av| 一级欧美一级日韩片| 欧美午夜性色大片在线观看| 男人天堂资源在线| 国产成人在线播放| 91日韩视频| 久久久久亚洲AV成人网人人小说| 一区二区三区影院| 色婷婷av一区二区三区之e本道| 九九热这里只有在线精品视| 国产精品欧美大片| 日本a级片免费观看| 国产亚洲欧美一区在线观看| 日批视频免费观看| 免费99精品国产自在在线| 豆花视频一区二区| www一区二区www免费| 日本一区二区免费在线| 国产一区二区在线视频观看| 欧美激情一区二区三区成人| 一区二区美女| 日本美女视频一区| 亚洲国产日韩av| 日本天堂在线| 成人福利网站在线观看| 激情欧美国产欧美| 日本理论中文字幕| 日韩欧美www| 天天免费亚洲黑人免费| 中文字幕一区二区三区四区五区| 成人一级视频在线观看| 国产午夜无码视频在线观看 | 亚洲精品一区av在线播放| www.精品国产| 黄色一级片在线看| 国产精品青草久久| 成人午夜福利视频| 国产精品美女久久久久av超清| 欧美日韩伊人| 内射毛片内射国产夫妻| 精品国产91乱码一区二区三区 | 日本在线观看大片免费视频| 欧美日韩国产精品一卡| 国产传媒欧美日韩成人| 久久久蜜桃一区二区|