用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实现预加载动画效果
Sep 06 HTML / CSS
CSS3制作Dropdown下拉菜单的方法
Jul 18 HTML / CSS
CSS3的常见transformation图形变化用法小结
May 13 HTML / CSS
如何使用localstorage代替cookie实现跨域共享数据问题
Apr 18 HTML / CSS
HTML5之SVG 2D入门13—svg对决canvas及长处和适用场景分析
Jan 30 HTML / CSS
针对HTML5的Web Worker使用攻略
Jul 12 HTML / CSS
使用Html5实现异步上传文件,支持跨域,带有上传进度条
Sep 17 HTML / CSS
详解HTML5中的拖放事件(Drag 和 drop)
Nov 14 HTML / CSS
详解HTML5中的picture元素响应式处理图片
Jan 03 HTML / CSS
htnl5利用svg页面高斯模糊的方法
Jul 20 HTML / CSS
CSS3 制作的图片滚动效果
Apr 14 HTML / CSS
CSS基础详解
Oct 16 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
世界第一个无线广播电台 KDKA
2021/03/01 无线电
杏林同学录(三)
2006/10/09 PHP
PHP 读取和修改大文件的某行内容的代码
2009/10/30 PHP
php microtime获取浮点的时间戳
2010/02/21 PHP
PHP实现文字写入图片功能
2019/02/18 PHP
Highslide.js是一款基于js实现的网页中图片展示插件
2020/03/30 Javascript
使用javascript获取flash加载的百分比的实现代码
2011/05/25 Javascript
JSON+JavaScript处理JSON的简单例子
2013/03/20 Javascript
JavaScript中数组继承的简单示例
2015/07/29 Javascript
js倒计时简单实现方法
2015/12/17 Javascript
BootStrap便签页的简单应用
2017/01/06 Javascript
NodeJS遍历文件生产文件列表功能示例
2017/01/22 NodeJs
Vue中的组件及路由使用实例代码详解
2019/05/22 Javascript
新手入门js闭包学习过程解析
2019/10/08 Javascript
浅析js实现网页截图的两种方式
2019/11/01 Javascript
[07:52]2014DOTA2 TI逗比武士游V社解说背后的故事
2014/07/10 DOTA
非递归的输出1-N的全排列实例(推荐)
2017/04/11 Python
Python实现复杂对象转JSON的方法示例
2017/06/22 Python
在Python程序员面试中被问的最多的10道题
2017/12/05 Python
《Python学习手册》学习总结
2018/01/17 Python
Pandas DataFrame 取一行数据会得到Series的方法
2018/11/10 Python
python之验证码生成(gvcode与captcha)
2019/01/02 Python
Python Subprocess模块原理及实例
2019/08/26 Python
Python绘制二维曲线的日常应用详解
2019/12/04 Python
基于OpenCV的网络实时视频流传输的实现
2020/11/15 Python
pandas针对excel处理的实现
2021/01/15 Python
HTML5 canvas 瀑布流文字效果的示例代码
2018/01/31 HTML / CSS
Jowissa官方网站:瑞士制造的手表,优雅简约的设计
2020/07/29 全球购物
俄罗斯首家面向中国消费者的一站式购物网站:Wruru
2020/05/08 全球购物
小学教师办公室制度
2014/02/03 职场文书
《日月潭》教学反思
2014/02/28 职场文书
十周年庆典策划方案
2014/06/03 职场文书
2014年乡镇团委工作总结
2014/12/18 职场文书
2015年城市管理工作总结
2015/05/23 职场文书
如何让2019年上半年的工作总结更出色!
2019/07/01 职场文书
导游词之唐山景点
2019/12/18 职场文书