使用微信内嵌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参数的小问题
Mar 02 Javascript
cloudgamer出品ImageZoom 图片放大效果
Apr 01 Javascript
jquery css 设置table的奇偶行背景色示例
Jun 03 Javascript
ionic中列表项增加和删除的实现方法
Jan 22 Javascript
如何通过非数字与字符的方式实现PHP WebShell详解
Jul 02 Javascript
AngularJS 购物车全选/取消全选功能的实现方法
Aug 14 Javascript
jQuery插件jsonview展示json数据
May 26 jQuery
详解组件库的webpack构建速度优化
Jun 18 Javascript
使用localStorage替代cookie做本地存储
Sep 25 Javascript
javascript 易错知识点实例小结
Apr 25 Javascript
JavaScript实现像雪花一样的Hexaflake分形
Jul 07 Javascript
jQuery实现鼠标拖动图片功能
Mar 04 jQuery
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
ThinkPHP控制器里javascript代码不能执行的解决方法
2014/11/22 PHP
基于php的CMS中展示文章类实例分析
2015/06/18 PHP
PHP调用API接口实现天气查询功能的示例
2017/09/21 PHP
Laravel等框架模型关联的可用性浅析
2019/12/15 PHP
IE浏览器兼容Firefox的JS脚本的代码
2008/10/23 Javascript
网页自动跳转代码收集
2009/09/27 Javascript
jQuery学习笔记之jQuery选择器的使用
2010/12/22 Javascript
javascript对talbe进行动态添加、删除、验证实现代码
2012/03/29 Javascript
使用CSS3的scale实现网页整体缩放
2014/03/18 Javascript
javascript实现简单的分页特效
2015/08/12 Javascript
基于JavaScript实现拖动滑块效果
2017/02/16 Javascript
jQuery实现多张图片上传预览(不经过后端处理)
2017/04/29 jQuery
ZeroClipboard.js使用一个flash复制多个文本框
2017/06/19 Javascript
基于dataset的使用和图片延时加载的实现方法
2017/12/11 Javascript
nodejs+express搭建多人聊天室步骤
2018/02/12 NodeJs
vue的token刷新处理的方法
2018/07/17 Javascript
vue中通过使用$attrs实现组件之间的数据传递功能
2019/09/01 Javascript
python基于multiprocessing的多进程创建方法
2015/06/04 Python
Python命令启动Web服务器实例详解
2017/02/23 Python
Python入门学习指南分享
2018/04/11 Python
Python 使用 Pillow 模块给图片添加文字水印的方法
2019/08/30 Python
python创建学生管理系统
2019/11/22 Python
python模拟哔哩哔哩滑块登入验证的实现
2020/04/24 Python
使用phonegap检测网络状态的方法
2017/03/30 HTML / CSS
Sahajan美国:阿育吠陀护肤品牌
2021/01/09 全球购物
《春晓》教学反思
2014/04/20 职场文书
高三上学期学习自我评价
2014/04/23 职场文书
小学生国旗下演讲稿
2014/04/25 职场文书
村干部培训方案
2014/05/02 职场文书
大一工商管理职业生涯规划:有梦最美,行动相随
2014/09/18 职场文书
一年级数学下册复习计划
2015/01/17 职场文书
迟到检讨书
2015/01/26 职场文书
运动会开幕词
2015/01/28 职场文书
幼儿园中班教师个人工作总结
2015/02/06 职场文书
2015年服务员个人工作总结
2015/05/27 职场文书
Dashboard管理Kubernetes集群与API访问配置
2022/04/01 Servers