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 相关文章推荐
JQuery1.4+ Ajax IE8 内存泄漏问题
Oct 15 Javascript
jQuery jqgrid 对含特殊字符json 数据的 Java 处理方法
Jan 01 Javascript
使用jquery读取html5 localstorage的值的方法
Jan 04 Javascript
常用js字符串判断方法整理
Oct 18 Javascript
jQuery文件上传插件Uploadify使用指南
Jun 05 Javascript
jQuery入门基础知识学习指南
Aug 14 Javascript
js实现可旋转的立方体模型
Oct 16 Javascript
angular forEach方法遍历源码解读
Jan 25 Javascript
基于js 各种排序方法和sort方法的区别(详解)
Jan 03 Javascript
ES6中let、const的区别及变量的解构赋值操作方法实例分析
Oct 15 Javascript
浅谈vue中使用编辑器vue-quill-editor踩过的坑
Aug 03 Javascript
查找Vue中下标的操作(some和findindex)
Aug 12 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
dede全站URL静态化改造[070414更正]
2007/04/17 PHP
php+javascript的日历控件
2009/11/19 PHP
PHP 抓取新浪读书频道的小说并生成txt电子书的代码
2009/12/18 PHP
PHP中的traits简单使用实例
2015/05/13 PHP
基于Asp.net与Javascript控制的日期控件
2010/05/22 Javascript
jquery下异步提交表单 异步跨域提交表单
2010/11/17 Javascript
解析JavaScript中的不可见数据类型
2013/12/02 Javascript
jquery获取checkbox的值并post提交
2015/01/14 Javascript
jquery使用each方法遍历json格式数据实例
2015/05/18 Javascript
Angular.JS去掉访问路径URL中的#号详解
2017/03/30 Javascript
Ajax高级笔记 JavaScript高级程序设计笔记
2017/06/22 Javascript
vue中计算属性(computed)、methods和watched之间的区别
2017/07/27 Javascript
vue项目中引入noVNC远程桌面的方法
2018/03/05 Javascript
vue中组件的过渡动画及实现代码
2018/11/21 Javascript
详解JavaScript中的Object.is()与&quot;===&quot;运算符总结
2020/06/17 Javascript
vue 二维码长按保存和复制内容操作
2020/09/22 Javascript
Python实现的Kmeans++算法实例
2014/04/26 Python
python shell根据ip获取主机名代码示例
2017/11/25 Python
Pyqt实现无边框窗口拖动以及窗口大小改变
2018/04/19 Python
Python使用try except处理程序异常的三种常用方法分析
2018/09/05 Python
python实现图片九宫格分割
2021/03/07 Python
Django在pycharm下修改默认启动端口的方法
2019/07/26 Python
Python如何对XML 解析
2020/06/28 Python
python3通过subprocess模块调用脚本并和脚本交互的操作
2020/12/05 Python
手把手教你用纯css3实现轮播图效果实例
2017/05/04 HTML / CSS
CSS3转换功能transform主要属性值分析及实现分享
2012/05/06 HTML / CSS
你不知道的5个HTML5新功能
2016/06/28 HTML / CSS
HTML5的新特性(1)
2016/03/03 HTML / CSS
印度民族服装购物网站:BIBA
2019/08/05 全球购物
清洁工表扬信
2014/01/08 职场文书
宿舍使用违章电器检讨书
2014/01/12 职场文书
暑期教师培训方案
2014/06/07 职场文书
乡镇领导班子四风对照检查材料
2014/09/27 职场文书
师德师风自查总结
2014/10/14 职场文书
2015年学校体育工作总结
2015/04/22 职场文书
农村结婚典礼主持词
2015/06/29 职场文书