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 相关文章推荐
JS 判断代码全收集
Apr 28 Javascript
js 页面刷新location.reload和location.replace的区别小结
Dec 24 Javascript
js实时监听文本框状态的方法
Apr 26 Javascript
jQuery插件的写法分享
Jun 12 Javascript
jQuery后代选择器用法实例
Dec 23 Javascript
Javascript中typeof 用法小结
May 12 Javascript
关于Jquery中的事件绑定总结
Oct 26 Javascript
深入学习 JavaScript中的函数调用
Mar 23 Javascript
JS实现百度网盘任意文件强制下载功能
Aug 31 Javascript
微信小程序按钮点击跳转页面详解
May 06 Javascript
javascript 使用sleep函数的常见方法详解
Apr 26 Javascript
JavaScript实现音乐导航效果
Nov 19 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.MVC的模板标签系统(四)
2006/09/05 PHP
PHP 缓存实现代码及详细注释
2010/05/16 PHP
php中获取关键词及所属来源搜索引擎名称的代码
2011/02/15 PHP
支持中文和其他编码的php截取字符串函数分享(截取中文字符串)
2014/03/13 PHP
浅析php适配器模式(Adapter)
2014/11/25 PHP
PHP简单获取上月、本月、近15天、近30天的方法示例
2017/07/03 PHP
浅析PHP数据导出知识点
2018/02/17 PHP
php中Swoole的热更新实现代码实例
2021/03/04 PHP
jquery实现弹出窗口效果的实例代码
2013/11/28 Javascript
用jquery模仿的a的title属性的例子
2014/10/22 Javascript
基于jquery实现最简单的选项卡切换效果
2016/05/08 Javascript
详解nodejs微信公众号开发——4.自动回复各种消息
2017/04/11 NodeJs
AngularJS实现的回到顶部指令功能实例
2017/05/17 Javascript
vue中component组件的props使用详解
2017/09/04 Javascript
Vue2.0基于vue-cli+webpack同级组件之间的通信教程(推荐)
2017/09/14 Javascript
使用JS获取SessionStorage的值
2018/01/12 Javascript
在vue 中使用 less的教程详解
2018/09/26 Javascript
vue项目首屏打开速度慢的解决方法
2019/03/31 Javascript
微信小程序 生成携带参数的二维码
2019/10/23 Javascript
vue如何使用rem适配
2021/02/06 Vue.js
[05:05]给小松五分钟系列 第二期介绍为什么打DOTA2
2014/07/02 DOTA
在Python的Flask框架中验证注册用户的Email的方法
2015/09/02 Python
Python 中 Virtualenv 和 pip 的简单用法详解
2017/08/18 Python
Python使用Scrapy保存控制台信息到文本解析
2017/12/27 Python
在CMD命令行中运行python脚本的方法
2018/05/12 Python
Python格式化日期时间操作示例
2018/06/28 Python
Python动态生成多维数组的方法示例
2018/08/09 Python
python修改linux中文件(文件夹)的权限属性操作
2020/03/05 Python
如何在python中处理配置文件代码实例
2020/09/27 Python
世界上最大的折扣香水店:FragranceNet.com
2016/10/26 全球购物
财务副总经理工作职责
2013/11/25 职场文书
会计出纳岗位职责
2013/12/25 职场文书
党的群众路线教育实践活动批评与自我批评发言稿
2014/10/16 职场文书
签证工作证明模板
2015/06/15 职场文书
python使用torch随机初始化参数
2022/03/22 Python
golang语言指针操作
2022/04/14 Golang