用canvas显示验证码的实现


Posted in HTML / CSS onApril 10, 2020

最近做了一个小需求,就是点击删除按钮,弹出提示弹框让你输入验证码确认删除。

那么怎么显示从后台获取的验证码供用户输入呢?我在理解需求时还以为是后台直接把验证码发到用户的手机上 然后让其输入,其实不然,我理解错了,应该用 canvas 把验证码画出来。

理解需求之后我扒着有验证码的网址看,开始 canvas 画图之旅。

技术栈: quasar (基于vue的一种框架) / canvas

点击删除按钮,触发弹框弹出

用canvas显示验证码的实现

弹框为什么会弹出呢? 因为点击删除按钮,触发 handleAddDialogOpened 事件,使得data里面的 addDialogOpened 由false变成true,弹框就由之前的不显示变成显示啦。

如图代码是弹框代码:其中 canvas 标签上的 ref 是多余的,抱歉呐,忘记删掉了

用canvas显示验证码的实现 

data 里面定义的数据:定义 canvas 画布的宽高

verifyCode_ 绑定用户输入input框的验证码

用canvas显示验证码的实现 

computed 计算属性里面 mapState 映射 verifyCode 数据, mapState 是辅助函数,用于帮助我们简化生成计算属性,不懂的可以扒着 vuex 的官网瞅瞅

用canvas显示验证码的实现 

mapActions 也是辅助函数,用于将组件的方法映射为 store.dispatch

getVerifyCode 就是向后台获取验证的请求方法

用canvas显示验证码的实现 

canvasclick 方法用于 当用户辨认不清验证码,或者输入错误重新输入时,点击 换一个 即可更新验证码(此时要重新从后台获取验证码) 后台小哥哥不打烊呐~~~

用canvas显示验证码的实现 

核心代码: drawPic() 方法就是画验证码的核心方法

1 获取画布标签 使用 getElementById 原生获取 dom

2 使用 .getContext('2d') 准备画布 .textBaseline 定义画布描绘的基线

3 绘制背景

4 绘制验证码

5 绘制干扰视觉的线和点

用canvas显示验证码的实现 

drawText() 绘制验证码的方法

用canvas显示验证码的实现 

drawLine() 绘制干扰线的方法

用canvas显示验证码的实现 

drawDot() 绘制干扰点的方法

用canvas显示验证码的实现 

定义弹框弹出的方法以及删除的方法, 回归需求 ,到此这个需求就完成了 可以和后台联调,没啥问题就可提交代码啦

用canvas显示验证码的实现 

总结:

a. 遇到没有做过的需求,要去看看别人怎么做的,目前还没有难到要你自己创新,没有任何类比的代码

b. 善于使用debugger调试代码,看看自己代码那里出了问题,有bug不要慌,喝口水,去debugger打断点深入理解代码执行逻辑,效率解决

c. 作为社畜大军的一员,要自律, 要输出 ,要锻炼,有时间还要看看代码大全,地铁上撸撸MDN文档,扎实js, 期待那个你想成为的你, 共勉

到此这篇关于用canvas显示验证码的实现的文章就介绍到这了,更多相关canvas显示验证码内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章,希望大家以后多多支持三水点靠木!

HTML / CSS 相关文章推荐
CSS3 3D制作实战案例分析
Sep 18 HTML / CSS
利用CSS3实现自定义滚动条代码分享
Aug 18 HTML / CSS
25个CSS3动画按钮和菜单教程分享
Oct 03 HTML / CSS
用CSS3打造HTML5的Logo(实现代码)
Jun 16 HTML / CSS
HTML5 用动画的表现形式装载图像
Mar 08 HTML / CSS
HTML5 对各个标签的定义与规定:body的介绍
Jun 21 HTML / CSS
html5中canvas学习笔记1-画板的尺寸与实际显示尺寸
Jan 06 HTML / CSS
HTML5之SVG 2D入门5—颜色的表示及定义方式
Jan 30 HTML / CSS
html5实现canvas阴影效果示例
May 07 HTML / CSS
Html5+JS实现手机摇一摇功能
Apr 24 HTML / CSS
Html5移动端div固定到底部实现底部导航条的几种方式
Mar 09 HTML / CSS
css中:last-child不生效的解决方法
Aug 05 HTML / CSS
HTML5给汉字加拼音收起展开组件的实现代码
Apr 08 #HTML / CSS
iPhoneX安全区域(Safe Area)底部小黑条在微信小程序和H5的屏幕适配
Apr 08 #HTML / CSS
HTML5 textarea高度自适应的两种方案
Apr 08 #HTML / CSS
html5给汉字加拼音加进度条的实现代码
Apr 07 #HTML / CSS
详解HTML5如何使用可选样式表为网站或应用添加黑暗模式
Apr 07 #HTML / CSS
HTML5拖放API实现自动生成相框功能
Apr 07 #HTML / CSS
canvas绘制树形结构可视图形的实现
Apr 03 #HTML / CSS
You might like
PHP删除HTMl标签的三种解决方法
2013/06/30 PHP
PHP合并静态文件详解
2014/11/14 PHP
smarty内部日期函数html_select_date()用法实例分析
2015/07/08 PHP
解决ThinkPHP下使用上传插件Uploadify浏览器firefox报302错误的方法
2015/12/18 PHP
PHP后台实现微信小程序登录
2018/08/03 PHP
ASP中用Join和Array,可以加快字符连接速度的代码
2007/08/22 Javascript
地震发生中逃生十大法则
2008/05/12 Javascript
用jquery设置按钮的disabled属性的实现代码
2010/11/28 Javascript
jQuery UI Dialog控件中的表单无法正常提交的解决方法
2010/12/19 Javascript
javascript中日期转换成时间戳的小例子
2013/03/21 Javascript
限制上传文件大小和格式的jQuery插件实例
2015/01/24 Javascript
基于gulp合并压缩Seajs模块的方式说明
2016/06/14 Javascript
jquery mobile 实现自定义confirm确认框效果的简单实例
2016/06/17 Javascript
javascript 判断是否是微信浏览器的方法
2016/10/09 Javascript
Javascript实现倒计时时差效果
2017/05/18 Javascript
20行JS代码实现网页刮刮乐效果
2017/06/23 Javascript
解决JS外部文件中文注释出现乱码问题
2017/07/09 Javascript
解决vue动态为数据添加新属性遇到的问题
2018/09/18 Javascript
在移动端使用vue-router和keep-alive的方法示例
2018/12/02 Javascript
JS自定义对象创建与简单使用方法示例
2020/01/15 Javascript
Swiper实现导航栏滚动效果
2020/10/16 Javascript
JSON stringify方法原理及实例解析
2020/10/23 Javascript
Vue+penlayers实现多边形绘制及展示
2020/12/24 Vue.js
[00:37]DOTA2上海特级锦标赛 Secert 战队宣传片
2016/03/03 DOTA
[01:56]林书豪DOTA2上海特级锦标赛励志短片
2016/03/05 DOTA
最大K个数问题的Python版解法总结
2016/06/16 Python
Python机器学习算法之k均值聚类(k-means)
2018/02/23 Python
Python 实现异步调用函数的示例讲解
2018/10/14 Python
python实现大文本文件分割
2019/07/22 Python
keras的load_model实现加载含有参数的自定义模型
2020/06/22 Python
行政办公室岗位职责
2014/03/18 职场文书
费城故事观后感
2015/06/10 职场文书
毕业酒会致辞
2015/07/29 职场文书
高一英语教学反思
2016/03/03 职场文书
互联网创业商业模式以及赚钱法则有哪些?
2019/10/12 职场文书
JS不要再到处使用绝对等于运算符了
2021/04/30 Javascript