使用微信内嵌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 对象是否存在判断
Jul 15 Javascript
javascript 面向对象继承
Nov 26 Javascript
分享一个asp.net pager分页控件
Jan 04 Javascript
jquery与prototype框架的详细对比
Nov 21 Javascript
jQuery读取XML文件内容的方法
Mar 09 Javascript
JavaScript中的toLocaleDateString()方法使用简介
Jun 12 Javascript
js实现延迟加载的方法
Jun 24 Javascript
js断点调试心得分享(必看篇)
Dec 08 Javascript
javaScript动态添加Li元素的实例
Feb 24 Javascript
基于vue中keep-alive缓存问题的解决方法
Sep 21 Javascript
JavaScript设计模式之观察者模式实例详解
Jan 16 Javascript
小程序实现搜索框
Jun 19 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和JavaScrip分别获取关联数组的键值示例代码
2013/09/16 PHP
php截取字符串函数分享
2015/02/02 PHP
php中文字符串截取多种方法汇总
2016/10/06 PHP
tbody元素支持嵌套的注意方法
2007/03/24 Javascript
Tips 带三角可关闭的文字提示
2010/10/06 Javascript
JS实现一个列表中包含上移下移删除等功能
2014/09/24 Javascript
创建你的第一个AngularJS应用的方法
2015/06/16 Javascript
node.js调用C++开发的模块实例
2015/07/03 Javascript
jquery实现的3D旋转木马特效代码分享
2015/08/25 Javascript
javascript中for/in循环及使用技巧
2015/09/01 Javascript
JS实现从顶部下拉显示的带动画QQ客服特效代码
2015/10/24 Javascript
JavaScript实现元素滚动条到达一定位置循环追加内容
2017/12/28 Javascript
去掉vue 中的代码规范检测两种方法(Eslint验证)
2018/03/21 Javascript
浅谈Vue render函数在ElementUi中的应用
2018/09/06 Javascript
Angular6 Filter实现页面搜索的示例代码
2018/12/02 Javascript
[01:07:46]完美世界DOTA2联赛循环赛 Magma vs IO BO2第二场 11.01
2020/11/02 DOTA
python进阶教程之函数对象(函数也是对象)
2014/08/30 Python
详解Python中time()方法的使用的教程
2015/05/22 Python
Python 实现一个颜色色值转换的小工具
2016/12/06 Python
python 删除非空文件夹的实例
2018/04/26 Python
python使用Plotly绘图工具绘制气泡图
2019/04/01 Python
pybind11在Windows下的使用教程
2019/07/04 Python
如何用Python进行时间序列分解和预测
2021/03/01 Python
使用phonegap进行本地存储的实现方法
2017/03/31 HTML / CSS
纪伊国屋泰国网上书店:Kinokuniya泰国
2017/12/24 全球购物
大学生自我鉴定范文模板
2014/01/21 职场文书
党员岗位承诺口号大全
2014/03/28 职场文书
分家协议书
2014/04/21 职场文书
安全协议书
2014/04/23 职场文书
《中国梦我的梦》中学生演讲稿
2014/08/20 职场文书
庆七一活动总结
2014/08/27 职场文书
幼儿园托班开学寄语(2016春季)
2015/12/03 职场文书
Kubernetes中Deployment的升级与回滚
2022/04/01 Servers
Mysql调整优化之四种分区方式以及组合分区
2022/04/13 MySQL
MySQL远程无法连接的一些常见原因总结
2022/09/23 MySQL
插件导致ECharts被全量引入的坑示例解析
2022/09/23 Javascript