h5通常是由各个客户端或者浏览器打开,但有时候要根据不同客户端展示不同内容,这个时候就需要h5知道是由哪个来源的客户端打开了自己
1.客户端的参数通常写在navigator
的userAgent
参数中,这样前端就可以通过获取这个参数了解客户端的信息了
const ua = navigator.userAgent.toLowerCase();
2.然后通过获取到的ua参数与你的白名单参数做匹配,利用正则及test
或match
方法来比对
// 微信环境
export const isWx = /MicroMessenger/i.test(ua);
// 微信另一种方法
if (ua.match(/MicroMessenger/i)) {
origin = 'wechat_oa';
}
// 支付宝环境
export const isAlipay = /AlipayClient|AliApp\(AP/i.test(ua);
3.或者通过indexOf
来判断
// 农行
if (navigator.userAgent.indexOf('Bankabc') > -1) {
origin = 'abc';
}
// 支付宝
if (navigator.userAgent.indexOf('AlipayClient') > -1) {
origin = 'alipay_service';
}
4.若是自家gs软件,通常可通过Cookies
获取对应客户端的包名,如:
import Cookies from 'js-cookie';
const vvcPn = Cookies.get('vvc_pn');
// 是否是游戏中心
const isGameCenter = vvcPn === 'com.vivo.game';
5.应用场景:根据来源判断是否展示某项内容,如根据来源判断是否展示头部
isHidenHeader() {
return (
isVivoRelatedApp ||
isAlipay ||
isWx ||
/noheader=true/.test(navigator.userAgent.toLowerCase())
);
}
6.应用场景:或根据来源定义对应的来源名传给服务端做相应返回,如:
const ua = navigator.userAgent.toLowerCase();
let origin = '';
// 微信
if (ua.match(/MicroMessenger/i)) {
origin = 'wechat_oa';
}