收藏
回答

公众号菜单跳转小程序带参数,有更好的获取方法吗?

我的小程序现在有这样的需求:用户点击公众号的菜单“我要报名”的按钮后,先跳转到小程序的首页,然后在小程序内通过web-view打开h5页面进行报名操作。


我的实现方法是,在设置公众号的菜单按钮跳转的小程序页面的路径带上一个参数,是一个url,即:

pages/index/index?url=https://h5.mypage.net(index是个tabbar界面)


我在模拟器设定了启动参数url=https://h5.mypage.net能够在index的onLoad options中获取得到url并成功跳转。

但是小程序上线后发现,正式版的小程序能获取url这个参数,但是跳转失败,即小程序只知道有url这个参数(因为已经navigateTo我的web-view),但是并没有url的参数内容(web-view访问的地址是404)

我在这篇文章得到了解答https://blog.csdn.net/shaleilei/article/details/80693326

即公众号跳转小程序的tabbar页带的参数是“无效的”

后来我是在index的onLoad里面通过wx.getLaunchOptionsSync().query成功获取到url


然而,我们的公众号有几个报名按键,我第一次按的报名按键能够成功获取url,但是如果我推出小程序,按其他报名按键,发现跳转的页面还是第一个报名按键制定的页面。那是因为,小程序推出后会在后台运行,如果我这时按其他报名按键,唤起小程序不会再次触发onLaunch,那么wx.getLaunchOptionsSync()拿到的还是上一次启动的参数,那就是上一个页面。


我觉得公众号跳转小程序tabbar页面的onLoad options不能获取参数是一个非常不合理的设定,我在网上找了很多网页都没有解决的办法。也有人提出同样的观点,这样的设定只有在开发者试错后才得知也是非常的无奈。两年前有人发现这个问题,但是这个问题一直存在,我只希望如果有解决方法的开发者能够给予一下帮助,谢谢。

最后一次编辑于  08-27
回答关注问题邀请回答
收藏

4 个回答

  • จุ๊บ
    จุ๊บ
    08-27

    小程序的onshow方法 每次都会执行

    08-27
    赞同 1
    回复 1
    • Cama!n
      Cama!n
      08-27
      但是onShow获取不到页面传值
      08-27
      回复
  • Meゞ夨ヤ譩丨网站,App,小程序开发
    Meゞ夨ヤ譩丨网站,App,小程序开发
    08-27
    onShow: function(options) {
       console.log("onShow:", options);
       this.globalData.path = options.path;
       this.globalData.query = options.query;
       this.globalData.scene = options.scene;
    },

    app.js里面获取,然后设置成全局变量,在页面的onShow里面去判断就行了。

    08-27
    赞同
    回复 1
    • Cama!n
      Cama!n
      08-27
      谢谢帮助
      08-27
      回复
  • o0o有脾气的酸奶
    o0o有脾气的酸奶
    08-27

    写在app.js里的onShow(options)里

    08-27
    赞同
    回复 1
    • Cama!n
      Cama!n
      08-27
      谢谢,我试试发布后是否有效
      08-27
      回复
  • 仙森ღ₅₂₀¹³¹⁴
    仙森ღ₅₂₀¹³¹⁴
    08-27

    建议在 app.js的onLaunch 或者 onShow里 把query存内存(globalData.query)下。其他页面使用app.globalData.query.url获取。你试试~

    08-27
    赞同
    回复 1
    • Cama!n
      Cama!n
      08-27
      好的,谢谢你。
      08-27
      回复
问题标签