使用微信内嵌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 相关文章推荐
js截取字符串的两种方法及区别详解
Nov 05 Javascript
js图片闪动特效可以控制间隔时间如几分钟闪动一下
Aug 12 Javascript
JQuery 使用attr方法实现下拉列表选中
Oct 13 Javascript
使用script的src实现跨域和类似ajax效果
Nov 10 Javascript
jQuery中复合属性选择器用法实例
Dec 31 Javascript
javascript实现文字无缝滚动
Dec 27 Javascript
关于ES6的六个小特性(二)
Feb 20 Javascript
使用JS动态显示文本
Sep 09 Javascript
vue2.0 elementUI制作面包屑导航栏
Feb 22 Javascript
微信小程序开发摇一摇功能
Nov 22 Javascript
请求时token过期自动刷新token操作
Sep 11 Javascript
解决antd的Form组件setFieldsValue的警告问题
Oct 29 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获取数据库结果集方法(推荐)
2017/06/01 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
Linux下安装Memcached服务器和客户端与PHP使用示例
2019/04/15 PHP
一些易混淆且不常用的属性,希望有用
2007/01/29 Javascript
延时重复执行函数 lLoopRun.js
2007/05/08 Javascript
javascript 异常处理使用总结
2009/06/21 Javascript
JS 控件事件小结
2012/10/31 Javascript
引用外部脚本时script标签关闭的写法
2014/01/20 Javascript
JavaScript点击按钮后弹出透明浮动层的方法
2015/05/11 Javascript
JavaScript中iframe实现局部刷新的几种方法汇总
2016/01/06 Javascript
使用jQuery Ajax 请求webservice来实现更简练的Ajax
2016/08/04 Javascript
ReactJS实现表单的单选多选和反选的示例
2017/10/13 Javascript
微信小程序身份证验证方法实现详解
2019/06/28 Javascript
Vue分页器实现原理详解
2019/06/28 Javascript
使用Vue实现调用接口加载页面初始数据
2019/10/28 Javascript
通过微信公众平台获取公众号文章的方法示例
2019/12/25 Javascript
JavaScript装饰者模式原理与用法实例详解
2020/03/09 Javascript
重命名批处理python脚本
2013/04/05 Python
python的pandas工具包,保存.csv文件时不要表头的实例
2018/06/14 Python
Python multiprocess pool模块报错pickling error问题解决方法分析
2019/03/20 Python
利用python计算windows全盘文件md5值的脚本
2019/07/27 Python
python opencv 实现对图像边缘扩充
2020/01/19 Python
HTML5 Canvas 破碎重组的视频特效的示例代码
2019/09/24 HTML / CSS
婴儿鞋,独特的婴儿服装和配件:Zutano
2018/11/03 全球购物
英国女性时尚品牌:Apricot
2018/12/04 全球购物
倩碧澳大利亚官网:Clinique澳大利亚
2019/07/22 全球购物
英国豪华家具和经典家居饰品购物网站:OKA
2020/06/05 全球购物
教师的实习鉴定
2013/12/15 职场文书
计算机专业毕业生求职信分享
2013/12/24 职场文书
农村婚礼证婚词
2014/01/10 职场文书
同学聚会老师邀请函
2014/01/28 职场文书
2014两会优秀的心得体会范文
2014/03/17 职场文书
如何写贫困证明申请书
2014/10/29 职场文书
实习单位指导教师评语
2014/12/30 职场文书
2015个人半年总结范文
2015/03/09 职场文书
table设置超出部分隐藏,鼠标移上去显示全部内容的方法
2022/12/24 HTML / CSS