用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弹性盒模型开发笔记(三)
Apr 26 HTML / CSS
分享30个新鲜的CSS3打造的精美绚丽效果(附演示下载)
Dec 28 HTML / CSS
利用 CSS3 实现的无缝轮播功能代码
Sep 25 HTML / CSS
css3实现圆锥渐变conic-gradient效果
Feb 12 HTML / CSS
css3的focus-within选择器的使用
May 11 HTML / CSS
html5 利用重力感应实现摇一摇换颜色可用来做抽奖等等
May 07 HTML / CSS
谈一谈HTML5本地存储技术
Mar 02 HTML / CSS
浅谈h5自定义audio(问题及解决)
Aug 19 HTML / CSS
解决HTML5手机端页面缩放的问题
Oct 27 HTML / CSS
CSS3点击按钮圆形进度打钩效果的实现代码
Mar 30 HTML / CSS
CSS实现漂亮的时钟动画效果的实例代码
Mar 30 HTML / CSS
css实现两栏布局,左侧固定宽,右侧自适应的多种方法
Aug 07 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读取flv文件的播放时间长度
2009/09/03 PHP
作为PHP程序员应该了解MongoDB的五件事
2013/06/03 PHP
typecho插件编写教程(五):核心代码
2015/05/28 PHP
PHP的Socket网络编程入门指引
2015/08/11 PHP
Laravel模型间关系设置分表的方法示例
2018/04/21 PHP
laravel 实现划分admin和home 模块分组
2019/10/15 PHP
PHP封装请求类实例分析【基于Yii框架】
2019/10/17 PHP
JS效率个人经验谈(8-15更新),加入range技巧
2007/01/09 Javascript
Extjs学习笔记之六 面版
2010/01/08 Javascript
基于jquery的blockui插件显示弹出层
2011/04/14 Javascript
jquery重复提交请求的原因浅析
2014/05/23 Javascript
nodejs爬虫抓取数据乱码问题总结
2015/07/03 NodeJs
浅谈JavaScript中的string拥有方法的原因
2015/08/28 Javascript
jQuery实现从身份证号中获取出生日期和性别的方法分析
2016/02/25 Javascript
JS定时器实现数值从0到10来回变化
2016/12/09 Javascript
js实现按座位号抽奖
2017/04/05 Javascript
BootStrap表单验证中的非Submit类型按钮点击时触发验证的坑
2019/09/05 Javascript
JS中比较两个Object数组是否相等方法实例
2019/11/11 Javascript
python3中str(字符串)的使用教程
2017/03/23 Python
Django获取该数据的上一条和下一条方法
2019/08/12 Python
解决Django连接db遇到的问题
2019/08/29 Python
使用Python画出小人发射爱心的代码
2019/11/23 Python
浅谈Python协程
2020/06/17 Python
python的pip有什么用
2020/06/17 Python
python3访问字典里的值实例方法
2020/11/18 Python
CSS3实现全景图特效示例代码
2018/03/26 HTML / CSS
使用Html5 Stream开发实时监控系统
2020/06/02 HTML / CSS
HTML5适合的情人节礼物有纪念日期功能
2021/01/25 HTML / CSS
教师校本培训方案
2014/02/26 职场文书
单位委托书范本(3篇)
2014/09/18 职场文书
鲁迅故里导游词
2015/02/05 职场文书
义卖募捐活动总结
2015/05/09 职场文书
酒桌上的开场白
2015/06/01 职场文书
Python 多线程处理任务实例
2021/11/07 Python
nginx 添加http_stub_status_module模块
2022/05/25 Servers
什么是clearfix (一文搞清楚css清除浮动clearfix)
2023/05/21 HTML / CSS