H5页面判断是否是微信小程序打开

H5项目接入微信授权登录,通过 UA 区分微信还是普通浏览器:

let ua = navigator.userAgent.toLowerCase();
let isWeixin = ua.indexOf('micromessenger') !== -1;

但是在微信小程序中嵌套该页面也会被认为是微信打开并弹出授权提示。

我们需要做一下判断,小程序中打开不需要提示授权。

可以通过微信官方提供的 SDK 来判断是否是小程序环境。

安装依赖:

npm install weixin-js-sdk --save

说明:该依赖是由 yanxi 大佬将官方 js-sdk 发布到 npm,支持 CommonJS,便于 browserify,webpack 等直接使用。

官方JS源码: https://res.wx.qq.com/open/js/jweixin-1.6.0.js

使用说明: https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115

在需要的页面引入:

import wx from 'weixin-js-sdk'

在页面中判断:

wx.miniProgram.getEnv(res => {
  if (res.miniprogram) {
    alert("miniProgram");
  } else {
    alert("weChat");
  }
})

再根据业务需求编写逻辑就可以了。

 

直接引入

用小程序提供的wx.miniProgram.getEnv可以获取环境参数

<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>
<script>
    var ua = navigator.userAgent.toLowerCase();
    if(ua.match(/MicroMessenger/i)=="micromessenger") {
        //ios的ua中无miniProgram,但都有MicroMessenger(表示是微信浏览器)
        wx.miniProgram.getEnv((res)=>{
           if (res.miniprogram) {
               alert("在小程序里");
           } else {
               alert("不在小程序里");
           }
        })
    }else{
        alert('不在微信里');
    }
</script>
转自:https://www.cnblogs.com/daipianpian/p/10288675.html
posted @ 2022-12-27 14:34  前端白雪  阅读(2664)  评论(0)    收藏  举报