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 相关文章推荐
几行代码轻松搞定jquery实现flash8类似的连接效果
May 03 Javascript
js nextSibling属性和previousSibling属性概述及使用注意
Feb 16 Javascript
JS中getYear()和getFullYear()区别分析
Jul 04 Javascript
JQuery中serialize()、serializeArray()和param()方法示例介绍
Jul 31 Javascript
jQuery表单美化插件jqTransform使用详解
Apr 12 Javascript
javascript实现tab切换特效
Nov 12 Javascript
JavaScript如何禁止Backspace键
Dec 02 Javascript
jQuery 获取跨域XML(RSS)数据的相关总结分析
May 18 Javascript
Javascript中常见的逻辑题和解决方法
Sep 17 Javascript
JS中Swiper的使用和轮播图效果
Aug 11 Javascript
vue-router+nginx 非根路径配置方法
Jun 30 Javascript
javascript验证form表单数据的案例详解
Mar 25 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
基于mysql的bbs设计(三)
2006/10/09 PHP
PHP操作MongoDB时的整数问题及对策说明
2011/05/02 PHP
PHP中实现中文字符进制转换原理分析
2011/12/06 PHP
Dom在ajax技术中的作用说明
2010/10/25 Javascript
javascript数组去重3种方法的性能测试与比较
2013/03/26 Javascript
javascript面向对象之定义成员方法实例分析
2015/01/13 Javascript
基于jQuery实现收缩展开功能
2016/03/18 Javascript
Vue.js动态组件解析
2016/09/09 Javascript
详解能在多种前端框架下使用的表格控件
2017/01/11 Javascript
jQuery实现字体颜色渐变效果的方法
2017/03/29 jQuery
详细讲解vue2+vuex+axios
2017/05/27 Javascript
删除table表格行的实例讲解
2017/09/21 Javascript
微信小程序实现选项卡功能
2020/06/19 Javascript
vue组件实现可搜索下拉框扩展
2020/10/23 Javascript
基于Bootstrap下拉框插件bootstrap-select使用方法详解
2018/08/07 Javascript
关于Vue项目跨平台运行问题的解决方法
2018/09/18 Javascript
jQuery实现简单三级联动效果
2020/09/05 jQuery
[50:34]VGJ.T vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python发送邮件功能实现代码
2016/07/15 Python
Python处理JSON数据并生成条形图
2016/08/05 Python
python读取和保存图片5种方法对比
2018/09/12 Python
python实现zabbix发送短信脚本
2018/09/17 Python
python中matplotlib条件背景颜色的实现
2019/09/02 Python
Python转换itertools.chain对象为数组的方法
2020/02/07 Python
python+opencv3生成一个自定义纯色图教程
2020/02/19 Python
jupyter notebook 添加kernel permission denied的操作
2020/04/21 Python
python3实现简单飞机大战
2020/11/29 Python
详解基于 Canvas 手撸一个六边形能力图
2019/09/02 HTML / CSS
屈臣氏越南官网:Watsons越南
2021/01/14 全球购物
应届毕业生就业自荐信
2013/10/26 职场文书
校园文明倡议书
2014/05/16 职场文书
学期个人自我总结
2015/02/13 职场文书
教师个人自我评价
2015/03/04 职场文书
物流业务员岗位职责
2015/04/03 职场文书
力克胡哲观后感
2015/06/10 职场文书
Spring boot admin 服务监控利器详解
2022/08/05 Java/Android