微信返回刷新数据

戏子无情 提交于 2019-12-02 23:40:27

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

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

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

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

原文地址:

微信web页面返回刷新

主要代码:

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

通过使用 PageTransitionEvent 对象的 persisted 属性来判断页面是直接从服务器上载入还是从缓存中读取,如果页面从浏览器的缓存中读取该属性返回 ture,否则返回 false 。但是本人测试发现返回都是false。

 

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!