在作微信公众号页面开发里,遇到一个问题。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种方法都不是最佳的实现方式。各位看官若是有更好的实现方案,但愿不吝赐教~~