微信返回刷新数据

在作微信公众号页面开发里,遇到一个问题。html

就是我如今有个数据叫作money,在a页面里面显示money,在b页面里面操做money,好比说提现。我如今提现完以后,在b页面咱们经过点击微信自带的返回或者手机上的返回跳转到a页面,money的数额并无变化。由于它并无刷新。咱们怎么在a页面监控到它是从b页面返回来的呢?web

下面是我在网上找的几种方法,经本人测试,只有最后一个方法是有用的。其余的,若是各位测试有效,欢迎留言。浏览器

方法1:利用history+popstate

原文地址:缓存

不少人都不知道的监听微信、支付宝等移动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", "#");
    }
});

 

方法2:利用event.persisted

原文地址:app

微信web页面返回刷新
测试

主要代码:url

window.onpageshow = function(event){
     if (event.persisted) {
         window.location.reload();
     }
}

经过使用 PageTransitionEvent 对象的 persisted 属性来判断页面是直接从服务器上载入仍是从缓存中读取,若是页面从浏览器的缓存中读取该属性返回 ture,不然返回 false 。可是本人测试发现返回都是false。spa

 

方法3:利用window.performance.navigation.type(本人采用的该方法)

原文地址:

如何判断页面是经过连接打开仍是经过后退按钮返回打开的?

主要代码:

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种方法都不是最佳的实现方式。各位看官若是有更好的实现方案,但愿不吝赐教~~

相关文章
相关标签/搜索