用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 相关文章推荐
CSS改变网页中鼠标选中文字背景颜色例子
Apr 23 HTML / CSS
纯CSS3绘制打火机动画火焰效果
Jul 18 HTML / CSS
HTML5是什么 HTML5是什么意思 HTML5简介
Oct 26 HTML / CSS
html5播放视频且动态截图实现步骤与代码(支持safari其他未测试)
Jan 06 HTML / CSS
HTML5实现WebSocket协议原理浅析
Jul 07 HTML / CSS
HTML5头部标签的一些常用信息小结
Oct 23 HTML / CSS
移动端Html5页面生成图片解决方案
Aug 07 HTML / CSS
canvas学习和滤镜实现代码
Aug 22 HTML / CSS
html table呈现个人简历以及单元格宽度失效的问题解决
Jan 22 HTML / CSS
CSS filter 有什么神奇用途
May 25 HTML / CSS
css实现两栏布局,左侧固定宽,右侧自适应的多种方法
Aug 07 HTML / CSS
CSS中实现动画效果-附案例
Feb 28 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
CI框架使用composer安装的依赖包步骤与方法分析
2016/11/21 PHP
php 利用socket发送GET,POST请求的实例代码
2020/07/04 PHP
JavaScript window.setTimeout() 的详细用法
2009/11/04 Javascript
Wordpress ThickBox 点击图片显示下一张图的修改方法
2010/12/11 Javascript
javascript解析json数据的3种方式
2014/05/08 Javascript
JS弹出对话框实现方法(三种方式)
2015/12/18 Javascript
使用vue-resource进行数据交互的实例
2017/09/02 Javascript
vuex2中使用mapGetters/mapActions报错的解决方法
2018/10/20 Javascript
浅谈KOA2 Restful方式路由初探
2019/03/14 Javascript
vue移动端城市三级联动组件使用详解
2019/07/26 Javascript
解决在layer.open中使用时间控件laydate失败的问题
2019/09/11 Javascript
jQuery实现日历效果
2020/09/11 jQuery
Vue用mixin合并重复代码的实现
2020/11/27 Vue.js
用Python实现一个简单的线程池
2015/04/07 Python
Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法
2017/01/12 Python
Python 中 list 的各项操作技巧
2017/04/13 Python
python机器学习之神经网络(二)
2017/12/20 Python
使用python和Django完成博客数据库的迁移方法
2018/01/05 Python
Python迷宫生成和迷宫破解算法实例
2019/12/24 Python
使用 Python 遍历目录树的方法
2020/02/29 Python
python实现梯度下降法
2020/03/24 Python
如何在keras中添加自己的优化器(如adam等)
2020/06/19 Python
python opencv实现图像配准与比较
2021/02/09 Python
纯CSS3实现手风琴风格菜单具体步骤
2013/05/06 HTML / CSS
使用CSS3来实现滚动视差效果的教程
2015/08/24 HTML / CSS
Html5适配iphoneX刘海屏的简单实现
2019/04/09 HTML / CSS
eBay意大利购物网站:eBay.it
2019/09/04 全球购物
莫斯科珠宝厂官方网站:Miuz
2020/09/19 全球购物
城管综合整治方案
2014/05/01 职场文书
自强之星事迹材料
2014/05/12 职场文书
个人四风对照检查材料
2014/09/26 职场文书
出国留学单位推荐信
2015/03/26 职场文书
《哪吒之魔童降世》观后感:世上哪有随随便便的成功
2019/11/08 职场文书
分布式锁为什么要选择Zookeeper而不是Redis?看完这篇你就明白了
2021/05/21 Redis
WCG2010 星际争霸决赛 Flash vs Goojila 1 星际经典比赛回顾
2022/04/01 星际争霸
使用Python开发贪吃蛇游戏 SnakeGame
2022/04/30 Python