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 两个窗体之间传值实现代码
Sep 25 Javascript
JQuyer $.post 与 $.ajax 访问WCF ajax service 时的问题需要注意的地方
Sep 20 Javascript
jQuery Ajax 仿AjaxPro.Utility.RegisterTypeForAjax辅助方法
Sep 27 Javascript
使用javascript:将其它类型值转换成布尔类型值的解决方法详解
May 07 Javascript
JS+CSS实现六级网站导航主菜单效果
Sep 28 Javascript
JS实现n秒后自动跳转的两种方法
Nov 30 Javascript
详解AngularJS中$filter过滤器使用(自定义过滤器)
Feb 04 Javascript
Vue实现内部组件轮播切换效果的示例代码
Apr 07 Javascript
JS中数据结构与算法---排序算法(Sort Algorithm)实例详解
Jun 17 Javascript
seajs和requirejs模块化简单案例分析
Aug 26 Javascript
vscode 配置vue+vetur+eslint+prettier自动格式化功能
Mar 23 Javascript
原生js实现自定义难度的扫雷游戏
Jan 22 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页面间参数传递的四种方法详解
2013/06/09 PHP
php获取数组长度的方法(有实例)
2013/10/27 PHP
php发送http请求的常用方法分析
2016/11/08 PHP
php array_values 返回数组的值实例详解
2016/11/17 PHP
PHP实现批量清空删除指定文件夹所有内容的方法
2017/05/30 PHP
laravel-admin select框默认选中的方法
2019/10/03 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
2020/02/15 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
2020/03/29 PHP
js获取url参数的使用扩展实例
2007/12/29 Javascript
firefo xml 读写实现js代码
2009/06/11 Javascript
读jQuery之二(两种扩展)
2011/06/11 Javascript
Javascript基础 函数“重载” 详细介绍
2013/10/25 Javascript
javascript中String对象的slice()方法分析
2014/12/20 Javascript
手机端转盘抽奖代码分享
2015/09/10 Javascript
Webpack 实现 AngularJS 的延迟加载
2016/03/02 Javascript
Sort()函数的多种用法
2016/03/20 Javascript
Javascript中parseInt的正确使用方式
2018/10/17 Javascript
关于vue组件事件属性穿透详解
2019/10/28 Javascript
python中sets模块的用法实例
2014/09/30 Python
python 通过logging写入日志到文件和控制台的实例
2018/04/28 Python
Python不同目录间进行模块调用的实现方法
2019/01/29 Python
python交易记录链的实现过程详解
2019/07/03 Python
Python求解排列中的逆序数个数实例
2020/05/03 Python
Python HTMLTestRunner如何下载生成报告
2020/09/04 Python
Python用dilb提取照片上人脸的示例
2020/10/26 Python
Python 使用SFTP和FTP实现对服务器的文件下载功能
2020/12/17 Python
Farfetch台湾官网:奢侈品牌时尚购物平台
2019/06/17 全球购物
乡镇网格化管理实施方案
2014/03/23 职场文书
工业自动化专业自荐信范文
2014/04/10 职场文书
社保缴纳证明申请书
2014/11/03 职场文书
高温慰问简报
2015/07/21 职场文书
团队执行力培训心得体会
2015/08/15 职场文书
2016年班主任培训心得体会
2016/01/07 职场文书
创业方案:赚钱的烧烤店该怎样做?
2019/07/05 职场文书
PHP对接阿里云虚拟号的实现(号码隐私保护)
2021/04/06 PHP
Python中npy和mat文件的保存与读取
2022/04/24 Python