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 相关文章推荐
Gird事件机制初级读本
Mar 10 Javascript
一个js封装的不错的选项卡效果代码
Feb 15 Javascript
JavaScript 常用函数库详解
Oct 21 Javascript
JQuery写动态树示例代码
Jul 31 Javascript
JavaScript实现给定时间相加天数的方法
Jan 25 Javascript
jQuery旋转插件jqueryrotate用法详解
Oct 13 Javascript
Node.js Mongodb 密码特殊字符 @的解决方法
Apr 11 Javascript
关于jQuery里prev()的简单操作代码
Oct 27 jQuery
Thinkjs3新手入门之添加一个新的页面
Dec 06 Javascript
JS散列表碰撞处理、开链法、HashTable散列示例
Feb 08 Javascript
如何利用 JS 脚本实现网页全自动秒杀抢购功能
Oct 12 Javascript
swiperjs实现导航与tab页的联动
Dec 13 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
关于时间计算的结总
2006/12/06 PHP
发布一个迷你php+AJAX聊天程序[聊天室]提供下载
2007/07/21 PHP
php全排列递归算法代码
2012/10/09 PHP
php实现文件下载(支持中文文名)
2013/12/04 PHP
php基于自定义函数记录log日志方法
2017/07/21 PHP
Yii2.0框架模型多表关联查询示例
2019/07/18 PHP
JSON字符串和对象之间的转换详解
2015/05/26 Javascript
基于jquery实现的树形菜单效果代码
2015/09/06 Javascript
jQuery File Upload文件上传插件使用详解
2016/12/06 Javascript
EditPlus中的正则表达式 实战(2)
2016/12/15 Javascript
利用Javascript实现简单的转盘抽奖
2017/02/13 Javascript
Bootstrap里的文件分别代表什么意思及其引用方法
2017/05/01 Javascript
关于Vue在ie10下空白页的debug小结
2018/05/02 Javascript
快速解决vue在ios端下点击响应延时的问题
2018/08/27 Javascript
微信小程序实现swiper切换卡内嵌滚动条不显示的方法示例
2018/12/20 Javascript
详解Vue依赖收集引发的问题
2019/04/22 Javascript
Vue vm.$attrs使用场景详解
2020/03/08 Javascript
[01:11:10]2014 DOTA2华西杯精英邀请赛 5 24 iG VS VG加赛
2014/05/26 DOTA
[04:49]2014DOTA2国际邀请赛 Newbee顺利挺进总决赛 ImbaTV独家专访
2014/07/19 DOTA
python实现简单的socket server实例
2015/04/29 Python
Python编程django实现同一个ip十分钟内只能注册一次
2017/11/03 Python
python中正则表达式与模式匹配
2019/05/07 Python
django的分页器Paginator 从django中导入类
2019/07/25 Python
Django中日期时间型字段进行年月日时分秒分组统计
2020/11/27 Python
女子锻炼服装和瑜伽服装:Splits59
2019/03/04 全球购物
雷曼兄弟的五金店:Lehman’s Hardware Store
2019/04/10 全球购物
医生自荐信
2013/10/11 职场文书
写好自荐信要注意的问题
2013/11/10 职场文书
《两个铁球同时着地》教学反思
2014/02/13 职场文书
硕士生找工作求职信
2014/07/05 职场文书
群众路线教育实践活动整改落实情况汇报
2014/10/28 职场文书
小学四年级学生评语
2014/12/26 职场文书
男方婚礼答谢词
2015/01/20 职场文书
小学教师师德师风自我评价
2015/03/04 职场文书
《我的长生果》教学反思
2016/02/20 职场文书
HTML常用标签超详细整理
2022/03/19 HTML / CSS