溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么利用微信內(nèi)嵌H5網(wǎng)頁解決JS倒計(jì)時(shí)失效的問題

發(fā)布時(shí)間:2020-09-28 15:52:41 來源:億速云 閱讀:179 作者:小新 欄目:web開發(fā)

小編給大家分享一下怎么利用微信內(nèi)嵌H5網(wǎng)頁解決JS倒計(jì)時(shí)失效的問題,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

項(xiàng)目要求:將H5商城頁面嵌套到公司微信公眾號(hào)里

項(xiàng)目本身的開發(fā)跟移動(dòng)端網(wǎng)頁并無太多差異,只是這昨天遇到一個(gè)問題,說是棘手,到也簡(jiǎn)單。

用戶下單后,在選擇支付方式頁面,有個(gè)倒計(jì)時(shí)的邏輯(從下單時(shí)開始計(jì)算,24小時(shí)后未支付,會(huì)有ws自動(dòng)取消這個(gè)訂單),js代碼如下: 

<script type="text/javascript"><br> var timespan = '20160113'; //后臺(tái)程序生成24小時(shí)時(shí)間差值,這里隨便寫寫
  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 = "支付剩余時(shí)間" + (hour<10?("0"+hour):hour) + ":" + (minute<10?("0"+minute):minute) + ":" + (second<10?("0"+second):second) + ",逾期訂單將自動(dòng)取消~";
    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>" + "訂單過期,已自動(dòng)取消~");
    window.location.href='@Url.Action("orderDetail", "Order", new { OrderNumber = Model.No })';; //訂單過期,跳轉(zhuǎn)到訂單詳情頁
   }
  }
  jQuery(document).ready(function () {
   UpdateTime();
  });<br></script>

  頁面效果如下:

怎么利用微信內(nèi)嵌H5網(wǎng)頁解決JS倒計(jì)時(shí)失效的問題

  這樣寫,本來沒有任何問題的,而且本地測(cè)試都o(jì)k。

  可是,放到外側(cè)的時(shí)候,問題就來了。安卓版微信,會(huì)出現(xiàn)當(dāng)手機(jī)鎖屏?xí)r,出現(xiàn)倒計(jì)時(shí)沒有走,仍然是關(guān)閉屏幕前時(shí)間,也就是說息屏這段時(shí)間,時(shí)間靜止了...

  后來,后來當(dāng)然不能著急啊,各方求救,尋找方法,于是有了下面:

  倒計(jì)時(shí)的實(shí)現(xiàn),在第一次進(jìn)入頁面時(shí),請(qǐng)求服務(wù)器獲取倒計(jì)時(shí)的剩余時(shí)間,然后在頁面通過js等手段再倒計(jì)時(shí);手機(jī)在鎖屏后再解鎖后倒計(jì)時(shí)還在進(jìn)行但是倒計(jì)時(shí)的時(shí)間不準(zhǔn)確,究其原因是在解鎖后沒有去請(qǐng)求服務(wù)器的時(shí)間來重新倒計(jì)時(shí)而是還是按照上次鎖屏的基礎(chǔ)上進(jìn)行倒計(jì)時(shí)的,這是因?yàn)闉g覽器有緩存,在不刷新頁面的情況下,瀏覽器會(huì)緩存第一次請(qǐng)求的內(nèi)容,服務(wù)端更新后瀏覽器仍然顯示第一次的內(nèi)容

  后來多方查證,可以在meta里進(jìn)行設(shè)置,設(shè)置頁面nocache,每次訪問次頁面,均需要從服務(wù)器重新獲取,而不是使用緩存中讀取

  expires設(shè)定過期時(shí)間,一旦過期就必須請(qǐng)求服務(wù)器,

  expries出現(xiàn)在http-equiv屬性中,使用content屬性表示頁面緩存的過期時(shí)間

  expries=0,緩存過期前的分鐘數(shù)。若用戶在頁面過期前返回該頁面,就會(huì)顯示緩存的版本頁   

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

看完了這篇文章,相信你對(duì)怎么利用微信內(nèi)嵌H5網(wǎng)頁解決JS倒計(jì)時(shí)失效的問題有了一定的了解,想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI