收藏
回答

判断是否在小程序web-view环境

看到帖子说安卓的webview UA带有miniprogram,而iOS没有
而iOS的window.__wxjs_environment === 'miniprogram'是有效的,部分安卓似乎无效
那么可不可以这么判断, 以获得一个准确的结果:

const isInWechatMP = () => {
        return (navigator.userAgent.match(/micromessenger/i) && navigator.userAgent.match(/miniprogram/i)) || window.__wxjs_environment === 'miniprogram';
};

期待官方答复!

最后一次编辑于  2018-09-18  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

2 个回答

  • 半寸灰
    半寸灰
    2018-09-18


    https://developers.weixin.qq.com/miniprogram/dev/component/web-view.html

    wx.miniProgram.getEnv


    2018-09-18
    赞同
    回复 4
    • 半寸灰
      半寸灰
      2018-09-18回复凡羽

      那还不简单

      web-view  是要先设置    src  你直接在url后面加个  参数 说明这是小程序   比如  https://xxxx?type=mp


      然后js问题  了

      比如  location.href   看看链接有没有这个参数



      2018-09-18
      1
      回复
    • 凡羽
      凡羽
      2018-09-18

      官方的方法的缺陷是不能够立即判断。如果想立即判断,就要通过UA,或者其他的方式。我想要知道iOS的window.__wxjs_environment === 'miniprogram'是不是在更高一级的层面写入的,我测下来,iOS的每次都可以判断成功,想得到官方证实。

      2018-09-18
      回复
    • 凡羽
      凡羽
      2018-09-18回复半寸灰

      url加参数是一个解决方案,但是如果是人为的投放url,有可能会造成出错,把非小程序webview环境,也判断为webview环境。

      2018-09-18
      回复
    • hyong
      hyong
      08-27回复半寸灰
      简单粗暴实用,就这个了。window.__wxjs_environment 有兼容性问题 wx.getEnv 是个异步而且需要引入sdk,都是弊端
      08-27
      回复
  • 凡羽
    凡羽
    2018-12-21

    貌似可以这样检测的,得到了官方答复


    2018-12-21
    赞同
    回复