方法可能不是最优解,只是自己随便搞的
我处理逻辑是匹配 这样的
根据这种值去匹配是哪一个浏览器
// 浏览器标识通过数组返回
const getUserAgent = () => {
const { userAgent } = navigator;
let left = 0;
const arr = [];
for (let i = 0; i < userAgent.length; i++) {
if (userAgent[i] === ' ') {
left = i;
} else if (userAgent[i] === '/' && left) {
arr.push(userAgent.slice(left + 1, i));
}
}
// 搜狗浏览器格式特殊
if (userAgent.includes('MetaSr')) {
arr.push('MetaSr');
}
return arr.slice(1);
};
export const broswerIdMap = {
QQ浏览器: ['Chrome', 'Safari', 'Core', 'QQBrowser'],
Chrome浏览器: ['Chrome', 'Safari'],
Edge浏览器: ['Chrome', 'Safari', 'Edg'],
搜狗浏览器: ['Chrome', 'Safari', 'MetaSr'],
Safari浏览器: ['Version', 'Safari'],
Firefox浏览器: ['Gecko', 'Firefox'],
'2345浏览器': ['Chrome', 'Safari', '2345Explorer'],
};
// 获取当前登录浏览器
export const getCurBroswer = () => {
let broswer = null;
console.log('window', window);
const broswerList = Object.keys(broswerIdMap);
const curAgent = getUserAgent();
for (let i = 0; i < broswerList.length; i++) {
if (curAgent.toString() === broswerIdMap[broswerList[i]].toString()) {
broswer = broswerList[i];
return broswer;
}
}
return '其他浏览器';
};
使用的时候直接调用这个 getCurBroswer 就行,就能获取到当前是什么浏览器
包含了我认知的主流浏览器
如果你问我为什么没有猎豹浏览器和360的话。。。我根本没法通过userAgent去分辨他们和chorme的区别!!!