vue短信验证性能优化如何写入localstorage中


Posted in Javascript onApril 25, 2018

平时我们在项目中进行注册等的时候,会经常用到短信验证的功能,但是现在现在很多短信验证都是存在下面几个问题,例如短信验证时间为60s的时候,

1. 当点击完按钮时,倒计时还没到60s过完时,刷新浏览器,验证码按钮又可以重新点击

2.当点击按钮倒计时开始,例如在50s的时候我关闭了浏览器,过了5s后,我在打开,此时时间倒计时的时间应该是45s左右,但是当重新打开浏览器的时候,按钮又可以重新点击了

为了解决上面的两个问题,就需要把时间都写到localstorage里面去,当打开页面的时候,就去localstorage里面去取,我这里就贴上我的解决方法,因为前几天有个vue的项目用到该方法,所以我这里就写个vue的方法出来吧

组件里面的html代码:

<div class="mtui-cell__ft" @click="getCode">
   <button class="mtui-vcode-btn mtui-text-center" v-if="flag">获取短信</button>
   <button class="mtui-vcode-btn mtui-text-center" v-if="!flag">剩余{{second}}s</button>
</div>

重点来啦

在data里面定义几个需要用到的变量:

second: 60,
 flag: true,
 timer: null // 该变量是用来记录定时器的,防止点击的时候触发多个setInterval

获取短信验证的方法:

getCode() {
   let that = this;
   if (that.flag) {
    that.flag = false;
    let interval = window.setInterval(function() {
     that.setStorage(that.second);
     if (that.second-- <= 0) {
      that.second = 60;
      that.flag = true;
      window.clearInterval(interval);
     }
    }, 1000);
   }
  }

写入和读取localstorage:

 setStorage(parm) {
   localStorage.setItem("dalay", parm);
   localStorage.setItem("_time", new Date().getTime());
  },
  getStorage() {
   let localDelay = {};
   localDelay.delay = localStorage.getItem("dalay");
   localDelay.sec = localStorage.getItem("_time");
   return localDelay;
  }

防止页面刷新是验证码失效:

judgeCode() {
   let that = this;
   let localDelay = that.getStorage();
   let secTime = parseInt(
    (new Date().getTime() - localDelay.sec) / 1000
   );
   console.log(localDelay);
   if (secTime > localDelay.delay) {
    that.flag = true;
    console.log("已过期");
   } else {
    that.flag = false;
    let _delay = localDelay.delay - secTime;
    that.second = _delay;
    that.timer = setInterval(function() {
     if (_delay > 1) {
      _delay--;
      that.setStorage(_delay);
      that.second = _delay;
      that.flag = false;
     } else {





 







// 此处赋值时为了让浏览器打开的时候,直接就显示剩余的时间
      that.flag = true;
      window.clearInterval(that.timer);
     }
    }, 1000);
   }
  }

然后在html挂载页面完成后的生命钩子(mounted)中调用judgeCode()方法就能实现该功能了

总结

以上所述是小编给大家介绍的vue短信验证性能优化如何写入localstorage中,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript 屏蔽鼠标键盘的几段代码
Jan 02 Javascript
菜鸟学习JavaScript小实验之函数引用
Nov 17 Javascript
判断及设置浏览器全屏模式
Apr 20 Javascript
js+html5实现的自由落体运动效果代码
Jan 28 Javascript
javascript中不易分清的slice,splice和split三个函数
Mar 29 Javascript
js判断出两个字符串最大子串的函数实现方法
Nov 01 Javascript
深究AngularJS之ui-router详解
Jun 13 Javascript
深入浅出es6模板字符串
Aug 26 Javascript
Angular2使用vscode断点调试ts文件的方法
Dec 13 Javascript
微信小程序使用map组件实现检索(定位位置)周边的POI功能示例
Jan 23 Javascript
layui数据表格重载实现往后台传参
Nov 15 Javascript
javascript实现移动端轮播图
Dec 09 Javascript
详解Vue.js中.native修饰符
Apr 24 #Javascript
Vue 动态设置路由参数的案例分析
Apr 24 #Javascript
vue.js前后端数据交互之提交数据操作详解
Apr 24 #Javascript
vue router动态路由下让每个子路由都是独立组件的解决方案
Apr 24 #Javascript
vue+webpack实现异步加载三种用法示例详解
Apr 24 #Javascript
vue中$refs的用法及作用详解
Apr 24 #Javascript
vue实现选项卡及选项卡切换效果
Apr 24 #Javascript
You might like
php数组函数序列之array_flip() 将数组键名与值对调
2011/11/07 PHP
php中使用parse_url()对网址进行解析的实现代码(parse_url详解)
2012/01/03 PHP
PHP处理bmp格式图片的方法分析
2017/07/04 PHP
PHP命名空间与自动加载类详解
2018/09/04 PHP
豆瓣网的jquery代码实例
2008/06/15 Javascript
基于jquery创建的一个图片、视频缓冲的效果样式插件
2012/08/28 Javascript
jQuery的cookie插件实现保存用户登陆信息
2014/04/15 Javascript
谈谈JavaScript中的几种借用方法
2016/08/09 Javascript
javascript解析ajax返回的xml和json格式数据实例详解
2017/01/05 Javascript
js如何获取网页所有图片
2017/05/12 Javascript
vue 使用ref 让父组件调用子组件的方法
2018/02/08 Javascript
JS实现集合的交集、补集、差集、去重运算示例【ES5与ES6写法】
2019/02/18 Javascript
详解微信图片防盗链“此图片来自微信公众平台 未经允许不得引用”的解决方案
2019/04/04 Javascript
javascript如何实现create方法
2019/11/04 Javascript
vue 更改连接后台的api示例
2019/11/11 Javascript
vue实现移动端触屏拖拽功能
2020/08/21 Javascript
vue 递归组件的简单使用示例
2021/01/14 Vue.js
python网络编程学习笔记(六):Web客户端访问
2014/06/09 Python
python自动化测试之从命令行运行测试用例with verbosity
2014/09/28 Python
python使用jieba实现中文分词去停用词方法示例
2018/03/11 Python
python SocketServer源码深入解读
2019/09/17 Python
python cv2截取不规则区域图片实例
2019/12/21 Python
Python统计学一数据的概括性度量详解
2020/03/03 Python
使用python接受tgam的脑波数据实例
2020/04/09 Python
Django 实现 Websocket 广播、点对点发送消息的代码
2020/06/03 Python
利用Vscode进行Python开发环境配置的步骤
2020/06/22 Python
Django数据统计功能count()的使用
2020/11/30 Python
一波HTML5 Canvas基础绘图实例代码集合
2016/02/28 HTML / CSS
就业推荐表自我鉴定
2013/10/29 职场文书
初中三年学生的学习自我评价
2013/11/13 职场文书
优秀教师主要事迹
2014/02/01 职场文书
公安交警中队队长个人对照检查材料思想汇报
2014/10/05 职场文书
2014年科室工作总结范文
2014/12/19 职场文书
蓬莱阁导游词
2015/02/04 职场文书
2016年感恩母亲节活动总结
2016/04/01 职场文书
教你使用Python pypinyin库实现汉字转拼音
2021/05/27 Python