h5、微信、小程序三端环境判断
这次的需求代码中存在兼容以上三端的情况,下文就如何判断这三个环境作详解(H5就不说了,没有判断的必要)。
微信环境的判断
对于微信可以通过全局变量WeixinJSBridge
来判断当前代码是否在微信环境下,即
1 | window.WeixinJSBridge ? '在微信' :'不在微信' |
但上述变量WeixinJSBridge
并不会在执行代码时立刻挂载在window
对象上,因此这个并不是一个最稳妥的判断方法,除非你执行上述代码的时候能保证window
对象下已经挂载了这个变量。在不能确定是否存在这个变量时如果要判断当前是否在微信环境下,这里还有另外一个方法,代码如下:
1 | /MicroMessenger/.test(navigator.userAgent) ? '在微信' :'不在微信' |
微信环境下的navigator.userAgent
这个字符串中会存在MicroMessenger
这个子字符串,因此可以通过上述方法在不确定WeixinJSBridge
是否已挂载的情况下来判断是否是微信环境。
小程序环境的判断
对于小程序来说也有一个全局变量可以用来判断是否是小程序环境————window.__wxjs_environment
1 | window.__wxjs_environment ? '在小程序' :'不在小程序' |
它和WeixinJSBridge
一样并不能在第一时间获取到,中间也有一个挂载的过程,如果在尚未挂载之前要对环境进行判断则需要监听事件。
由于小程序的执行环境在微信程序中,所以可以通过监听WeixinJSBridgeReady
事件来进行判断,代码如下:
1 | if(!window.WeixinJSBridge || !WeixinJSBridge.invoke) { //首先判断当前是否存在微信桥 |
综上为判断三端环境的详细说明
edit By AmamiRyoin