在做微信公众号页面开发里,触发微信返回事件的时候有2个需求。
我现在大概的页面流程是页面a->页面b,在页面b操作数据,在页面b点击返回,会回到a页面并刷新。在页面a点击返回,直接退回到公众号页面。
所以我需要监听2个事件。1是监听a页面的返回事件,2是判断页面a是不是从上个页面返回来的。
监听返回事件可以利用history+popstate实现。
监听页面a 是不是从上个页面返回来的可以使用 window.performance.navigation.type 实现。
a页面的主要代码如下:
$(function() {
let pushStateBool = false;
//判断用户是不是通过后退按钮访问本页面的
window.addEventListener('pageshow', function() {
pushStateBool = false;
setTimeout(function() {
pushStateBool = true;
}, 1000) //延迟1秒 防止ios微信返回立即执行popstate事件,文末有解释
pushHistory();
if (event.persisted || window.performance && window.performance.navigation.type == 2) {
//刷新当前页面
window.location.reload()
}
})
//监听返回按钮事件
window.addEven