精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产精品久一| 国产小视频在线播放| 亚洲一区二区| 亚洲精品成a人在线观看| 久久9精品区-无套内射无码| av在线第一页| 成人夜色视频网站在线观看| 欧美一区在线直播| 91精品国产闺蜜国产在线闺蜜| 99精品中文字幕在线不卡| 色综合夜色一区| 国产91porn| 国产系列电影在线播放网址| 国产精品亚洲午夜一区二区三区| 国产精品美女一区二区三区| 国产一区二区丝袜| 偷偷操不一样的久久| 欧美xxav| 日韩电影中文 亚洲精品乱码| 色一情一区二区| 女厕盗摄一区二区三区| 中文字幕一区二区三| 久久久99爱| 中文字幕a级片| 羞羞视频在线观看欧美| 久久午夜a级毛片| 国产真人做爰视频免费| 欧美wwwsss9999| 日韩欧美一区二区三区在线| 亚州精品一二三区| 理论不卡电影大全神| 亚洲精品成人天堂一二三| 亚洲国产高清国产精品| 色哟哟在线观看| 懂色av一区二区三区蜜臀| 91精品视频一区| 中文字幕第2页| 日韩高清不卡在线| 国产精品av免费在线观看| 日韩精品――中文字幕| 韩国av一区| 欧美剧在线观看| 午夜精品福利在线视频| 手机在线电影一区| 色哟哟网站入口亚洲精品| 四虎永久免费在线观看| 美女亚洲一区| 亚洲天堂av高清| 亚洲人成人无码网www国产 | 国产精品一区二区在线免费观看| 玖玖精品在线| 欧美日韩一区国产| 亚洲精品午夜在线观看| 99久久伊人| 欧美日韩在线免费视频| 色免费在线视频| 九九热这里有精品| 欧美日韩一区二区三区不卡| 国产三级国产精品国产专区50| 91精品影视| 在线观看日韩电影| 亚洲这里只有精品| 国产亚洲亚洲国产一二区| 日韩一区二区三区三四区视频在线观看 | 欧美无人高清视频在线观看| 午夜在线观看av| 欧美性www| 欧美一区午夜视频在线观看| 九色91porny| 国产精品videossex| 亚洲国产欧美一区| 欧美多人猛交狂配| 日韩欧美伦理| 欧美理论片在线观看| 日韩精品――中文字幕| 久久三级视频| 国产噜噜噜噜噜久久久久久久久 | 免费看黄色91| 91情侣在线视频| 手机看片国产1024| 久久精品视频在线看| 在线观看日本一区| 国产在线拍揄自揄拍视频| 欧美日韩免费看| 色婷婷综合久久久久中文字幕| 日韩电影精品| 亚洲成人aaa| av黄色在线免费观看| 91精品在线观看国产| 久久久伊人日本| 久久久久久av无码免费看大片| 国产九色精品成人porny| 亚洲一区中文字幕在线观看| 视频一区二区三区在线看免费看| 国产精品久久久久久亚洲毛片| 成人毛片100部免费看| 国产精选在线| 欧美福利视频一区| 亚洲AV无码国产精品| 国产大片一区| 55夜色66夜色国产精品视频| 国产精品视频久久久久久| 97久久久精品综合88久久| 亚洲精品中文字幕在线 | 午夜精品福利一区二区三区av | 成人激情动漫在线观看| 日韩高清在线播放| 国产三线在线| 欧美日韩一二三| 中文字幕日韩三级片| 88国产精品视频一区二区三区| 91a在线视频| 国产av精国产传媒| 中文字幕av资源一区| 亚洲精品蜜桃久久久久久| 国产91欧美| 日韩精品免费一线在线观看| 午夜免费激情视频| 久久国产麻豆精品| 欧美日韩精品久久| 超碰成人av| 日韩欧美一区电影| 亚洲女人久久久| 人人爽香蕉精品| 久久99精品久久久久久秒播放器 | 国产免费一区二区三区香蕉精| 天天操天天干天天爽| 亚洲色图在线看| 一区二区三区网址| 狠狠做深爱婷婷综合一区| 午夜欧美不卡精品aaaaa| 国产成人av免费看| 亚洲色图都市小说| 久久久免费视频网站| 国产精品高潮久久| 国产丝袜精品视频| 一级片中文字幕| 成人av在线资源网| 被灌满精子的波多野结衣| 日韩一区二区三区精品视频第3页| 中文精品99久久国产香蕉| 免费观看日批视频| 久久综合久久鬼色| 国产视频一区二区三区在线播放 | 日韩黄色高清视频| 五月天综合在线| 成人a区在线观看| 成人免费播放器| 久久综合五月婷婷| 98精品国产高清在线xxxx天堂| 蜜臀av中文字幕| 亚洲不卡在线观看| 熟妇高潮精品一区二区三区| 性感少妇一区| 日本一区视频在线观看免费| 欧美成人精品三级网站| 色系列之999| 国产成人精品av在线观| 亚洲国产日韩综合久久精品| 一边摸一边做爽的视频17国产| 欧美69视频| 国产欧美日韩视频一区二区三区| av最新在线| 亚洲欧美日韩高清| 伊人久久亚洲综合| 亚洲免费观看高清完整版在线观看| 1314成人网| 99亚洲伊人久久精品影院红桃| 麻豆蜜桃91| 成人精品一区二区三区电影| 久久大大胆人体| 欧美 中文字幕| 色哟哟国产精品| 午夜国产福利视频| 高清成人免费视频| 国产男女无遮挡| 日韩午夜电影网| 超碰97人人在线| 345成人影院| www.xxxx欧美| 人妻视频一区二区三区| 91黄色激情网站| 久久久久久久久久久久久女过产乱| 福利视频网站一区二区三区| 久久久久久久久久久久久国产精品 | 亚洲综合久久av一区二区三区| 国产成人午夜高潮毛片| 国产99久久九九精品无码| 日韩在线视屏| 国产日韩精品推荐| 欧美视频免费看| 97热在线精品视频在线观看| a黄色在线观看| 精品99一区二区| 伊人精品一区二区三区| 午夜精品一区二区三区电影天堂 | 国产精品视频1区| 丁香花在线观看完整版电影| 亚洲性69xxxbbb| 欧美一区,二区| 69久久99精品久久久久婷婷| 日本一区二区三区精品| 亚洲欧美激情小说另类| 免费看黄色的视频| 不卡一区二区三区四区| 最新av免费在线观看| 国产欧美亚洲一区| 中国一级大黄大黄大色毛片| 久久av网址| 国产一区二区三区高清| 高清一区二区三区av| 日本不卡高字幕在线2019| 污污片在线免费视频| 深夜福利一区二区| 美丽的姑娘在线观看免费动漫| 欧美成人乱码一区二区三区| 在线播放精品视频| 黑人精品xxx一区一二区| 精品一区二区三区人妻| 亚洲欧美日韩久久精品| 人成免费在线视频| 久久久99久久| 久久偷拍免费视频| 成人晚上爱看视频| 在线观看一区二区三区视频| 九九热在线视频观看这里只有精品 | 求av网址在线观看| 国产亚洲一区精品| 免费在线黄色网址| 精品偷拍一区二区三区在线看| 成人h动漫精品一区二区无码 | 亚洲一区二区三区四区在线| 韩国一级黄色录像| 国产精品精品国产色婷婷| 在线小视频你懂的| 欧美—级在线免费片| 亚洲精品乱码久久久久久久久久久久| 99国产一区二区三精品乱码| 国产免费一区二区三区最新6| 国产黄色精品网站| 中文字幕乱妇无码av在线| 国产一区三区三区| 野花视频免费在线观看| 国产成人午夜精品影院观看视频| 被黑人猛躁10次高潮视频| 国产乱色国产精品免费视频| 国产精品久久久久久久av福利| 久久国产精品99久久人人澡| 亚洲人视频在线| 国产精品一区二区三区网站| 中文字幕在线观看视频www| 国产精品一卡二| 亚洲成年人在线观看| a在线播放不卡| 亚洲精品视频大全| 久久久精品欧美丰满| 干b视频在线观看| 国产精品区一区二区三区| 日本少妇aaa| 亚洲综合一区二区| 伊人365影院| 色综合久久久久综合体桃花网| 久久久久久久久久成人| 精品视频在线看| av中文字幕免费| 亚洲精品国产精品国产自| 男人的天堂在线| 日韩亚洲精品视频| 女人黄色免费在线观看| 57pao精品| 欧美爱爱视频| 国产91视觉| 视频一区欧美| 欧美 国产 精品| 亚洲最黄网站| 久热精品在线播放| 成人国产精品免费| 精品人妻无码一区| 又紧又大又爽精品一区二区| 免费看日韩毛片| 欧美色图12p| 亚洲黄色精品视频| 国产亚洲精品久久久久久牛牛| 成人影院在线看| 欧美做爰性生交视频| 午夜精品久久久久久毛片| 国产亚洲精品美女久久久m| 精品一区电影| 欧美一级欧美一级| 日本少妇一区二区| 久久人妻少妇嫩草av蜜桃| 久久久亚洲综合| 青青操国产视频| 欧美综合一区二区三区| 亚洲成人一级片| 最近2019中文免费高清视频观看www99| 性欧美ⅴideo另类hd| 国产国语刺激对白av不卡| **爰片久久毛片| 五月天综合网| 亚洲精品黄色| 欧洲在线免费视频| 久久久久久久免费视频了| 欧美日韩成人免费观看| 欧美午夜在线观看| 偷拍自拍在线| 久久久免费精品视频| www.成人在线.com| 色噜噜狠狠一区二区三区| 中日韩男男gay无套| 一二三av在线| 国产欧美一区二区精品婷婷| 日韩xxxxxxxxx| 日韩三级视频在线观看| www.国产精品.com| 日本伊人精品一区二区三区介绍| 日韩中文字幕视频网| 99亚洲精品视频| 男人操女人的视频在线观看欧美| 三级黄色片网站| 亚洲成人午夜影院| 午夜精品在线播放| 久久在线免费观看视频| 国产精品久久久久久久久久齐齐| 久久婷婷人人澡人人喊人人爽| 好看不卡的中文字幕| 久久无码人妻一区二区三区| 国产精品久久看| 中文天堂在线资源| 一色桃子一区二区| free欧美| 欧美日韩亚洲免费| 久久久久国产精品一区三寸| 91av在线免费| 欧美日韩色婷婷| 天堂成人在线| 97精品一区二区视频在线观看| 国产欧美啪啪| 欧美二区在线视频| 91偷拍与自偷拍精品| 国产精品乱子伦| 亚洲另类激情图| 台湾佬成人网| 亚洲成人第一| 久久精品国内一区二区三区| 国产中文av在线| 欧美一区二区三区色| 国产美女福利在线| 97免费高清电视剧观看| 国产精品啊啊啊| 欧美夫妇交换xxx| 欧美视频国产精品| 国产一二三在线观看| 国产精品久久久久久久久影视| 波多野结衣的一区二区三区| 亚洲精品久久久中文字幕| 中文字幕视频一区| www.av黄色| 91wwwcom在线观看| 欧洲杯什么时候开赛| 手机av在线免费| 亚洲香蕉伊在人在线观| 亚洲人妻一区二区三区| 国产成人一区二区三区电影| 色婷婷热久久| 无码人妻一区二区三区免费n鬼沢| 亚洲v中文字幕| www.91在线| 91成人免费观看| 国产精品日韩| 国产黄色片在线| 精品国产一区二区亚洲人成毛片 | 国产一区二中文字幕在线看 | 久久国产亚洲精品无码| 国产色婷婷亚洲99精品小说| 国产精品爽爽久久久久久| 久久久久久久久久久网站| 男男gay无套免费视频欧美 | 成人看片黄a免费看在线| 亚洲天堂视频网站| 久久精品国产免费观看| 你懂的在线观看一区二区| 午夜激情av在线| 五月天久久比比资源色| 在线日本视频| 国产免费高清一区| 日韩av一级片| 久久精品视频6| 一区三区二区视频| y111111国产精品久久久| 91香蕉视频污版| 亚洲一二三区视频在线观看| 成人在线观看免费| 国产精品一区而去| 美女在线一区二区| 在线天堂中文字幕| 欧美大片免费观看在线观看网站推荐| 国产成人影院| 欧美xxxxx精品| 91精品国产色综合久久久蜜香臀|