安卓手机返回按钮,返回上一页,不触发钩子函数
发布于 5 年前 作者 minbai 11813 次浏览 来自 问答

如题。

安卓手机自带返回按钮,点击后。返回上一页。但不触发上一页的onShow。

场景: 首页->登陆/绑定手机号

原本设定为:首页监听是否获取token,获取到则为已绑定成功,没获取到则弹出授权绑定弹框。监听在onshow里面实现,但现在进入绑定手机号页面后,点击安卓手机自带返回按钮后,不触发首页的onshow,也就无法监听。用户绕过绑定手机号。。。

求官方解答。谢谢。

ps:可能要躺尸了。

2 回复

麻烦提供出现问题的具体机型、微信版本号、系统版本号,以及能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)

event.js

//event.js
var events = {};
 
function on(name, that, callback) {
    console.log('event->on', name)
    var tuple = [that, callback];
    var callbacks = events[name];
    if (Array.isArray(callbacks)) {
        callbacks.push(tuple);
    } else {
        events[name] = [tuple];
    }
}
 
function remove(name, that) {
    console.log('event->remove', name)
    var callbacks = events[name];
    if (Array.isArray(callbacks)) {
        events[name] = callbacks.filter((tuple) => {
            return tuple[0] != that;
        })
    }
}
 
function emit(name, data) {
    console.log('event->emit', name, data)
    var callbacks = events[name];
    if (Array.isArray(callbacks)) {
        callbacks.map((tuple) => {
            var that = tuple[0];
            var callback = tuple[1];
            console.log('event ' + name + ': +1')
            callback.call(that, data);
        })
    }
}
 
exports.on = on;
exports.remove = remove;
exports.emit = emit;

app.js中引入event.js

const event = require(’./utils/event.js’)

onLaunch: function(e) {
    this.event = event
}

在首页在onLoad里监听:

getApp().event.on('checkToken', this, function(res) {
    //根据res逻辑处理
})

在绑定页面完成操作后提交事件:

getApp().event.emit('checkToken', data)
回到顶部