用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自定义滚动条样式写法
Dec 25 HTML / CSS
CSS3不透明度实例讲解
Apr 26 HTML / CSS
HTML5 video视频字幕的使用和制作方法
May 03 HTML / CSS
详解Html5 Canvas画线有毛边解决方法
Mar 01 HTML / CSS
html5桌面通知(Web Notifications)实例解析
Jul 07 HTML / CSS
html5开发三八女王节表白神器
Mar 07 HTML / CSS
html5 外链式实现加减乘除的代码
Sep 04 HTML / CSS
html2canvas生成的图片偏移不完整的解决方法
May 19 HTML / CSS
HTML5 背景的显示区域实现
Jul 09 HTML / CSS
css display table 自适应高度、宽度问题的解决
May 07 HTML / CSS
详解CSS玩转图片Base64编码
May 25 HTML / CSS
CSS中妙用 drop-shadow 实现线条光影效果
Nov 11 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扩展模块Pecl、Pear以及Perl的区别
2014/04/09 PHP
PHP操作MongoDB实现增删改查功能【附php7操作MongoDB方法】
2018/04/24 PHP
PHP单例模式应用示例【多次连接数据库只实例化一次】
2018/12/18 PHP
JS类库Bindows1.3中的内存释放方式分析
2007/03/08 Javascript
javascript关于open.window子页面执行完成后刷新父页面的问题分析
2015/04/27 Javascript
url中的特殊符号有什么含义(推荐)
2016/06/17 Javascript
mvc 、bootstrap 结合分布式图简单实现分页
2016/10/10 Javascript
详解Angular 开发环境搭建
2017/06/22 Javascript
JavaScript正则表达式和级联效果
2017/09/14 Javascript
Javascript防止图片拉伸的自适应处理方法
2017/12/26 Javascript
Angularjs Promise实例详解
2018/03/15 Javascript
vue 自定义指令自动获取文本框焦点的方法
2018/08/25 Javascript
Vue 路由切换时页面内容没有重新加载的解决方法
2018/09/01 Javascript
玩转Koa之核心原理分析
2018/12/29 Javascript
vue路由守卫+登录态管理实例分析
2019/05/21 Javascript
Vue动态面包屑功能的实现方法
2019/07/01 Javascript
javascript实现移动端上传图片功能
2020/08/18 Javascript
[03:14]DOTA2斧王 英雄基础教程
2013/11/26 DOTA
[03:42]2014DOTA2西雅图国际邀请赛7月9日TOPPLAY
2014/07/09 DOTA
[01:01:24]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第三局
2016/02/25 DOTA
Python 过滤字符串的技巧,map与itertools.imap
2008/09/06 Python
python实现的一只从百度开始不断搜索的小爬虫
2013/08/13 Python
Python在Console下显示文本进度条的方法
2016/02/14 Python
Python中operator模块的操作符使用示例总结
2016/06/28 Python
利用Tkinter(python3.6)实现一个简单计算器
2017/12/21 Python
python dataframe 输出结果整行显示的方法
2018/06/14 Python
对python numpy.array插入一行或一列的方法详解
2019/01/29 Python
详解Python函数式编程—高阶函数
2019/03/29 Python
python面向对象法实现图书管理系统
2019/04/19 Python
python实现按行分割文件
2019/07/22 Python
记录模型训练时loss值的变化情况
2020/06/16 Python
如何利用XMLHTTP检测URL及探测服务器信息
2013/11/10 面试题
保安自我鉴定范文
2013/12/08 职场文书
省文明单位申报材料
2014/05/08 职场文书
党支部对照检查材料
2014/08/25 职场文书
忠诚奉献演讲稿
2014/09/12 职场文书