在作微信公衆號頁面開發裏,遇到一個問題。html
就是我如今有個數據叫作money,在a頁面裏面顯示money,在b頁面裏面操做money,好比說提現。我如今提現完以後,在b頁面咱們經過點擊微信自帶的返回或者手機上的返回跳轉到a頁面,money的數額並無變化。由於它並無刷新。咱們怎麼在a頁面監控到它是從b頁面返回來的呢?web
下面是我在網上找的幾種方法,經本人測試,只有最後一個方法是有用的。其餘的,若是各位測試有效,歡迎留言。瀏覽器
原文地址:緩存
不少人都不知道的監聽微信、支付寶等移動app及瀏覽器的返回、後退、上一頁按鈕的事件方法服務器
主要代碼以下:微信
$(function () { pushHistory(); var bool = false; setTimeout(function () { bool = true; }, 1500); window.addEventListener("popstate", function (e) { if (bool) { alert("我監聽到了瀏覽器的返回按鈕事件啦"); //根據本身的需求實現本身的功能 } pushHistory(); }, false); function pushHistory() { var state = { title: "title", url: "#" }; window.history.pushState(state, "title", "#"); } });
原文地址:app
主要代碼:url
window.onpageshow = function(event){ if (event.persisted) { window.location.reload(); } }
經過使用 PageTransitionEvent 對象的 persisted 屬性來判斷頁面是直接從服務器上載入仍是從緩存中讀取,若是頁面從瀏覽器的緩存中讀取該屬性返回 ture,不然返回 false 。可是本人測試發現返回都是false。spa
原文地址:
主要代碼:
window.addEventListener('pageshow', function(event) { if (event.persisted || window.performance && window.performance.navigation.type == 2) { window.location.reload(); } }, false);
實現原理:
window.performance.navigation.type包含三個值:
0 : TYPE_NAVIGATE (用戶經過常規導航方式訪問頁面,好比點一個連接,或者通常的get方式)
1 : TYPE_RELOAD (用戶經過刷新,包括JS調用刷新接口等方式訪問頁面)
2 : TYPE_BACK_FORWARD (用戶經過後退按鈕訪問本頁面)
我的感受上面這3種方法都不是最佳的實現方式。各位看官若是有更好的實現方案,但願不吝賜教~~