使用微信内嵌H5网页解决JS倒计时失效问题


Posted in Javascript onJanuary 13, 2017

 项目要求:将H5商城页面嵌套到公司微信公众号里

    项目本身的开发跟移动端网页并无太多差异,只是这昨天遇到一个问题,说是棘手,到也简单。

    用户下单后,在选择支付方式页面,有个倒计时的逻辑(从下单时开始计算,24小时后未支付,会有ws自动取消这个订单),js代码如下: 

<script type="text/javascript"><br> var timespan = '20160113'; //后台程序生成24小时时间差值,这里随便写写
  var timer;
  function UpdateTime() {
   if (timespan > 0) {
    var hour = Math.floor(timespan / (60 * 60));
    var minute = Math.floor((timespan - (hour * 60 * 60)) / 60);
    var second = (timespan - (hour * 60 * 60) - (minute * 60));
    var word = "支付剩余时间" + (hour<10?("0"+hour):hour) + ":" + (minute<10?("0"+minute):minute) + ":" + (second<10?("0"+second):second) + ",逾期订单将自动取消~";
    timespan--;
    jQuery(".tc").html("<i class='time'></i>" + word);
    timer = setTimeout("UpdateTime()", 1000);
   }
   else {
    $('.content').find('.w_op').hide();
    clearTimeout(timer);
    jQuery(".tc").html("<i class='time'></i>" + "订单过期,已自动取消~");
    window.location.href='@Url.Action("orderDetail", "Order", new { OrderNumber = Model.No })';; //订单过期,跳转到订单详情页
   }
  }
  jQuery(document).ready(function () {
   UpdateTime();
  });<br></script>

页面效果如下:

使用微信内嵌H5网页解决JS倒计时失效问题

这样写,本来没有任何问题的,而且本地测试都ok。

可是,放到外侧的时候,问题就来了。安卓版微信,会出现当手机锁屏时,出现倒计时没有走,仍然是关闭屏幕前时间,也就是说息屏这段时间,时间静止了...

后来,后来当然不能着急啊,各方求救,寻找方法,于是有了下面:

倒计时的实现,在第一次进入页面时,请求服务器获取倒计时的剩余时间,然后在页面通过js等手段再倒计时;手机在锁屏后再解锁后倒计时还在进行但是倒计时的时间不准确,究其原因是在解锁后没有去请求服务器的时间来重新倒计时而是还是按照上次锁屏的基础上进行倒计时的,这是因为浏览器有缓存,在不刷新页面的情况下,浏览器会缓存第一次请求的内容,服务端更新后浏览器仍然显示第一次的内容

后来多方查证,可以在meta里进行设置,设置页面nocache,每次访问次页面,均需要从服务器重新获取,而不是使用缓存中读取

  expires设定过期时间,一旦过期就必须请求服务器,

  expries出现在http-equiv属性中,使用content属性表示页面缓存的过期时间

  expries=0,缓存过期前的分钟数。若用户在页面过期前返回该页面,就会显示缓存的版本页

 

<meta http-equiv="pragma" content="no-cache"> 
<meta http-equiv="cache-control" content="no-cache"> 
<meta http-equiv="expires" content="0">

以上所述是小编给大家介绍的使用微信内嵌H5网页解决JS倒计时失效问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript判断office版本示例
Apr 11 Javascript
js跨域问题浅析及解决方法优缺点对比
Nov 08 Javascript
javaScript的函数对象的声明详解
Feb 06 Javascript
javascript中的正则表达式使用详解
Aug 30 Javascript
JavaScript脚本库编写的方法
Dec 09 Javascript
从零学习node.js之利用express搭建简易论坛(七)
Feb 25 Javascript
jQueryMobile之窗体长内容的缺陷与解决方法实例分析
Sep 20 jQuery
微信小程序实现运动步数排行功能(可删除)
Jul 05 Javascript
jQuery实现的鼠标拖动画矩形框示例【可兼容IE8】
May 17 jQuery
Layui table field初始化加载时进行隐藏的方法
Sep 19 Javascript
vue在路由中验证token是否存在的简单实现
Nov 11 Javascript
vue项目多环境配置(.env)的实现
Jul 21 Vue.js
bootstrap按钮插件(Button)使用方法解析
Jan 13 #Javascript
微信小程序 两种滑动方式(横向滑动,竖向滑动)详细及实例代码
Jan 13 #Javascript
bootstrap警告框使用方法解析
Jan 13 #Javascript
微信小程序 详解下拉加载与上拉刷新实现方法
Jan 13 #Javascript
js实现文字向上轮播功能
Jan 13 #Javascript
jQuery实现的省市联动菜单功能示例【测试可用】
Jan 13 #Javascript
js实现交通灯效果
Jan 13 #Javascript
You might like
PHP错误抑制符(@)导致引用传参失败Bug的分析
2011/05/02 PHP
探讨多键值cookie(php中cookie存取数组)的详解
2013/06/06 PHP
PHP判断一个gif图片是否为动态图片的方法
2014/11/19 PHP
PHP缓存集成库phpFastCache用法
2014/12/15 PHP
PHP Yaf框架的简单安装使用教程(推荐)
2016/06/08 PHP
PHP封装的验证码工具类定义与用法示例
2018/08/22 PHP
smarty模板的使用方法实例分析
2019/09/18 PHP
laravel 修改记住我功能的cookie保存时间的方法
2019/10/14 PHP
JavaScript asp.net 获取当前超链接中的文本
2009/04/14 Javascript
js中单引号与双引号冲突问题解决方法
2013/10/04 Javascript
js实现大转盘抽奖游戏实例
2015/06/24 Javascript
Javascript基础学习笔记(菜鸟必看篇)
2016/07/22 Javascript
bootstrap table实例详解
2017/01/06 Javascript
Koa2 之文件上传下载的示例代码
2018/03/29 Javascript
vue写h5页面的方法总结
2019/02/12 Javascript
javascript利用键盘控制小方块的移动
2020/04/20 Javascript
微信小程序报错: thirdScriptError的错误问题
2020/06/19 Javascript
使用Typescript开发微信小程序的步骤详解
2021/01/12 Javascript
[19:54]夜魇凡尔赛茶话会 第一期02:看图识人
2021/03/11 DOTA
使用Python对MySQL数据操作
2017/04/06 Python
Python实现简单文本字符串处理的方法
2018/01/22 Python
Python打开文件,将list、numpy数组内容写入txt文件中的方法
2018/10/26 Python
HTML的form表单和django的form表单
2019/07/25 Python
python实现输入的数据在地图上生成热力图效果
2019/12/06 Python
python读取ini配置的类封装代码实例
2020/01/08 Python
Python vtk读取并显示dicom文件示例
2020/01/13 Python
Python远程方法调用实现过程解析
2020/07/28 Python
Python制作数据预测集成工具(值得收藏)
2020/08/21 Python
python 8种必备的gui库
2020/08/27 Python
详解pycharm配置python解释器的问题
2020/10/15 Python
五好关工委申报材料
2014/05/31 职场文书
上甘岭观后感
2015/06/10 职场文书
2015年度女工工作总结
2015/10/22 职场文书
小学二年级语文教学反思
2016/03/03 职场文书
mysql分表之后如何平滑上线详解
2021/11/01 MySQL
JavaScript高级程序设计之基本引用类型
2021/11/17 Javascript