使用微信内嵌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 相关文章推荐
IE DOM实现存在的部分问题及解决方法
Jul 25 Javascript
基于jQuery的简单的列表导航菜单
Mar 02 Javascript
使用javascript实现页面定时跳转总结篇
Sep 21 Javascript
JavaScript中的ubound函数使用实例
Nov 04 Javascript
javascript实现密码强度显示
Mar 18 Javascript
jquery实现简单合拢与展开网页面板的方法
Sep 01 Javascript
Javascript闭包实例详解
Nov 29 Javascript
纯JS实现图片验证码功能并兼容IE6-8(推荐)
Apr 19 Javascript
Angular 4环境准备与Angular cli创建项目详解
May 27 Javascript
详解React 在服务端渲染的实现
Nov 16 Javascript
jquery插件开发模式实例详解
Jul 20 jQuery
Vue 通过公共字段,拼接两个对象数组的实例
Nov 07 Javascript
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判断一个字符串是否是回文字符串的方法
2015/03/23 PHP
php常用经典函数集锦【数组、字符串、栈、队列、排序等】
2019/08/23 PHP
zShowBox 图片放大展示jquery版 兼容性
2011/09/24 Javascript
基于jQuery.Validate验证库知识点的详解
2013/04/26 Javascript
浅析onsubmit校验表单时利用ajax的return false无效问题
2013/07/10 Javascript
jQuery大于号(&gt;)选择器的作用解释
2015/01/13 Javascript
js简单判断移动端系统的方法
2016/02/25 Javascript
Javascript数组Array方法解读
2016/03/13 Javascript
jQuery基于函数重载实现自定义Alert函数样式的方法
2016/07/27 Javascript
微信小程序 网络请求(GET请求)详解
2016/11/16 Javascript
完美解决JS文件页面加载时的阻塞问题
2016/12/18 Javascript
详解Jquery EasyUI tree 的异步加载(遍历指定文件夹,根据文件夹内的文件生成tree)
2017/02/11 Javascript
Angular.js基础学习之初始化
2017/03/10 Javascript
详解原生js实现offset方法
2017/06/15 Javascript
Angular5给组件本身的标签添加样式class的方法
2018/04/07 Javascript
vue实现页面滚动到底部刷新
2019/08/16 Javascript
让mocha支持ES6模块的方法实现
2020/01/14 Javascript
[03:48]大碗DOTA
2019/07/25 DOTA
Python中functools模块函数解析
2017/03/12 Python
Python学习之用pygal画世界地图实例
2017/12/07 Python
pytorch构建网络模型的4种方法
2018/04/13 Python
Python实现监控Nginx配置文件的不同并发送邮件报警功能示例
2019/02/26 Python
深入了解和应用Python 装饰器 @decorator
2019/04/02 Python
Django中的session用法详解
2020/03/09 Python
Python Opencv轮廓常用操作代码实例解析
2020/09/01 Python
酒吧副总经理岗位职责
2013/12/10 职场文书
大学校园毕业自我鉴定
2014/01/15 职场文书
春节联欢会主持词
2014/03/24 职场文书
卖房授权委托书样本
2014/10/05 职场文书
邀请函的格式
2015/01/30 职场文书
小学生节水倡议书
2015/04/29 职场文书
优秀乡村医生事迹材料(2016精选版)
2016/02/29 职场文书
mysql 8.0.24 安装配置方法图文教程
2021/05/12 MySQL
jackson json序列化实现首字母大写,第二个字母需小写
2021/06/29 Java/Android
MySQL常见优化方案汇总
2022/01/18 MySQL
Java 轮询锁使用时遇到问题
2022/05/11 Java/Android