js判断H5是否在小程序、微信中,webview中。

判断是否在微信中

 var ua = navigator.userAgent.toLowerCase();
 if (ua.match(/MicroMessenger/i) == "micromessenger") {
	//在微信中
 }

判断网页是否在小程序中

  • 判断是网页是否在小程序中的webview中,官方提供了两个判断函数。
// web-view下的页面内 函数1
function ready() {
  console.log(window.__wxjs_environment === 'miniprogram') // true
}
if (!window.WeixinJSBridge || !WeixinJSBridge.invoke) {
  document.addEventListener('WeixinJSBridgeReady', ready, false)
} else {
  ready()
}

// 函数2
wx.miniProgram.getEnv(function(res) {
  console.log(res.miniprogram) // true
})

  • 但是这两个函数都有缺陷,第一个函数社区开发者反应兼容性不好,ios和安卓有差异。第二个函数比较坑,是异步的。。。 但是准确度要高于第一个函数。所以还是推荐第二个函数。

推荐第二个函数,优化后的写法为这样

//函数
function isWx() {
    var ua = navigator.userAgent.toLowerCase();
    if (ua.match(/MicroMessenger/i) == "micromessenger") {
      return new Promise(resolve => {
        wx.miniProgram.getEnv(function(res) {
          if (res.miniprogram) {
            resolve("mini-wx");
          } else {
            resolve("wx");
          }
        });
      });
    } else {
      console.log("不在微信里");
      return new Promise(resolve => {
        resolve("no-wx");
      });
    }
  }
//调用
isWx().then(type => {
   if (type == "wx") {
     console.log("这是微信环境中");
   }
 });

注意:如果webview中有使用iframe,iframe中有涉及用到jssdk,那么可能会失效,需要在调用的地方加上parent。

wx.choose 要改为 parent.wx.choose。//前提是webview中已经引入了jssdk
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

越来越好。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值