微信内嵌H5网页 解决js倒计时失效

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

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

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


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

<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>

  页面效果如下:

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

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

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

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

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

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

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

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


1

2

3

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

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

<meta http-equiv="expires" content="0">

  

就这么完美解决了 [胜利]

时间: 2024-08-06 07:51:37

微信内嵌H5网页 解决js倒计时失效的相关文章

app内嵌H5网页(webviewJavaScriptBridge)

摘要:使用的插件为webviewJavaScriptBridge,app端需要引入一下这个包,html页面只需一段JS代码 与IOS交互 <! 申明交互(此处代码固定) > function setupWebViewJavascriptBridge(callback) { if (window.WebViewJavascriptBridge) { return callback(WebViewJavascriptBridge); } if (window.WVJBCallbacks) { re

wap网页、微信内嵌网页在手机端页面窗口尺寸如何不缩放

如何让wap网页.微信内嵌网页内容(尺寸和文字)在手机端页面窗口尺寸不被强制缩放 在head中加入: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> <meta name="

ios应用内嵌h5页面数据自动变色识别为手机号码的解决方法——手机号码拨号禁用IOS手机页面数字自动识别为手机号

现象如下,ios应用内嵌h5页面,本来是设置了白色的数字,两三秒之后会自动变为黑色,然后点击的时候就会弹出是否拨号的提示: 解决方法,添加如下meta标签,即可解决: <meta name="format-detection" content="telephone=no">

H5实例教学--微信内嵌视频2(素材来自腾讯孙尚香末日机甲皮肤宣传H5)

结合之前的两篇解析 微信内嵌视频1(案例浅析)https://segmentfault.com/a/11...从AnimateCC到CreateJS入门https://segmentfault.com/a/11... 这次是一篇createjs完成UI 结合内联视频实现的一个demo 因为忘了原地址所以大家只能自己下demo跑一下简单的效果了 需要简单搭建一个服务器来跑不然createjs对图片资源引用 稍微解析一下总结实现思路 主要是由两个标签实现 video标签实现在手机端内嵌视频播放 ca

小程序内嵌H5——判断小程序环境的坑

现在各种小程序风靡,这边H5的需求还没有搞定,产品又要求做小程序版本,做可以,关键是618前上线,我-- whatever,618要做推广,日期订了,剩下的就只能是排期,定方案,尽可能完成. 最后和产品商量之后的决定是:小程序中特有的营销推广的页面,用小程序编写,剩下的黄金流程,内嵌H5解决. 听起来好像很简单,but,没有想象中那么简单. 判断是否在小程序中 这个问题,网上一搜,答案很多,有说用UA的,有说用微信注入的JS对象的,有说用原生提供判断方法的. UA的有一个很大的问题,iOS判断不

禁止微信内的H5页面上下拖动

客户需求:禁止微信内的H5页面上下拖动: 解决方案: 网上的答案几乎都是阻止默认事件,即: 1 document.body.addEventListener('touchmove' , function(e){ 2 e.preventDefault(); 3 }); 但是使用这个方法还存在一定的问题: bug1:有时生效有时失效: 原因:经过不间断的实践测试,发现有可能是网络加载的问题,在用户拖动页面的时候上面的功能代码还没加载出来,所以没有生效. 解决方法:监听页面资源加载,等页面内所有资源加

小程序 webView 内嵌h5

前端时间搞了小程序跑h5的流程,趁着这段稍微空闲的时间整理下,和大家一起分享下 1.内嵌h5,小程序场景判断 wx.miniprogram.getev(fn)  ,   该方法是微信提供的api,注意的是,该方法是异步的 .引用微信的JS-SDK版本要相应版本(推荐用JSSDK 1.3.2或者以上),否则会出现方法不存在,或者其他问题. 2 web-view 中转,写个公用跳转页面(用的是wepy框架) <template> <web-view src="{{pageUrl}}

微信内嵌浏览器如何直接打开外部浏览器下载APP(APK)

想必大家会经常碰到网页链接在微信内无法打开和微信内无法打开app下载页的情况.通常这种情况微信会给个提示 “已停止访问该网址” ,那么导致这个情况的因素有哪些呢,主要有以下四点 1.网页链接被举报次数过多.2.网页含违规内容,含敏感词.3.被腾讯检测系统判断为诱导分享内容.4.转发分享次数达上限 那么上述问题怎么办呢?只要我们实现微信跳转浏览器的功能即可. 功能目的 生成微信跳转链接,实现微信内置浏览器跳转外部浏览器打开网页. 功能效果 对网页所属的PHP代码进行相关处理,加入跳转接口即可实现.

微信内打开的网页不能下载APP,微信无法打开浏览器访问指定页面的解决方案交给gdtool

前言 现如今微信对第三方推广链接的审核是越来越严格了,域名在微信中分享转发经常会被拦截,一旦被拦截用户就只能复制链接手动打开浏览器粘贴才能访问,要不然就是换个域名再推,周而复始.无论是哪一种情况都会面临一个非常严重的问题,那就是用户体验差,用户量无法有效地累积起来,从而导致推广成本一直在增加,推广效率却无法有明显的提升. 所以针对这个问题,特写这篇文章来分享如何正常从微信内访问已经被拦截的链接,或者说如何有效地防止链接被微信拦截.此方法适用于安卓和苹果,且不需要安装任何软件和插件. ? 简单的处