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("这是微信环境中");
       }
     });
    

  • 原文链接:https://blog.csdn.net/qq_38880700/article/details/124703594

您可能还会喜欢: