收藏
回答

安卓手机返回按钮,返回上一页,不触发钩子函数

如题。

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

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

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


求官方解答。谢谢。

ps:可能要躺尸了。

回答关注问题邀请回答
收藏

2 个回答

  • 社区技术运营专员-小柿子
    社区技术运营专员-小柿子
    2019-04-08

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

    2019-04-08
    赞同
    回复 1
    • 鹿一岁
      鹿一岁
      2019-04-08

      自带返回按钮的安卓机都会这样。官方是能够触发钩子函数的吗?

      2019-04-08
      回复
  • 再见,电脑崽
    再见,电脑崽
    2019-04-08

    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)



    2019-04-08
    赞同
    回复 7
    • 鹿一岁
      鹿一岁
      2019-04-08

      谢谢,我试试

      2019-04-08
      回复
    • 再见,电脑崽
      再见,电脑崽
      2019-04-08回复鹿一岁

      跨页面异步通信,这样肯定行的,我的项目里一直就是这么用的。

      2019-04-08
      回复
    • 鹿一岁
      鹿一岁
      2019-04-08回复再见,电脑崽

      但是从手机返回按钮上过来,同样不会触发onLoad鸭,这怎么监听

      2019-04-08
      回复
    • 再见,电脑崽
      再见,电脑崽
      2019-04-08回复鹿一岁

      这个机制不需要返回的时候监听,需要在事件触发的时候emit直接响应。

      2019-04-08
      回复
    • 再见,电脑崽
      再见,电脑崽
      2019-04-08回复鹿一岁

      比如,你绑定手机号的时候会执行request操作吧,在success回调里判断是否绑定成功,如果成功就emit一次,首页会收到数据的。

      2019-04-08
      回复
    查看更多(2)
登录 后发表内容