判断浏览器类型
检测用户使用的浏览器。
检测微信浏览器
function isWeixin() {
const ua = navigator.userAgent.toLowerCase();
return ua.includes('micromessenger');
}
// 使用
if (isWeixin()) {
console.log('在微信中打开');
// 微信特定处理
}
检测 iOS Safari
function isIOS() {
const ua = navigator.userAgent;
return /iPhone|iPad|iPod/i.test(ua);
}
function isSafari() {
const ua = navigator.userAgent;
return /Safari/.test(ua) && !/Chrome/.test(ua);
}
// 组合检测
function isIOSafari() {
return isIOS() && isSafari();
}
检测 Android
function isAndroid() {
const ua = navigator.userAgent.toLowerCase();
return ua.includes('android');
}
检测 Chrome
function isChrome() {
const ua = navigator.userAgent;
return /Chrome/.test(ua) && /Google Inc/.test(navigator.vendor);
}
检测 Firefox
function isFirefox() {
const ua = navigator.userAgent;
return /Firefox/.test(ua);
}
检测 Edge
function isEdge() {
const ua = navigator.userAgent;
return /Edg/.test(ua);
}
完整浏览器检测
const Browser = {
get ua() {
return navigator.userAgent;
},
isWeixin() {
return /micromessenger/i.test(this.ua);
},
isQQ() {
return /qqbrowser/i.test(this.ua);
},
isWeibo() {
return /weibo/i.test(this.ua);
},
isIOS() {
return /iphone|ipad|ipod/i.test(this.ua);
},
isAndroid() {
return /android/i.test(this.ua);
},
isMobile() {
return /mobile|android|iphone|ipad/i.test(this.ua);
},
isPC() {
return !this.isMobile();
},
isSafari() {
return /safari/i.test(this.ua) && !/chrome/i.test(this.ua);
},
isChrome() {
return /chrome/i.test(this.ua);
},
isFirefox() {
return /firefox/i.test(this.ua);
},
isEdge() {
return /edg/i.test(this.ua);
},
isIE() {
return /msie|trident/i.test(this.ua);
},
getPlatform() {
if (this.isIOS()) return 'iOS';
if (this.isAndroid()) return 'Android';
if (this.isPC()) return 'PC';
return 'Unknown';
}
};
// 使用
console.log(Browser.isWeixin());
console.log(Browser.isMobile());
console.log(Browser.getPlatform());
获取浏览器版本
function getBrowserVersion() {
const ua = navigator.userAgent;
// Chrome
const chromeMatch = ua.match(/Chrome\/(\d+)/);
if (chromeMatch) {
return { browser: 'Chrome', version: chromeMatch[1] };
}
// Firefox
const firefoxMatch = ua.match(/Firefox\/(\d+)/);
if (firefoxMatch) {
return { browser: 'Firefox', version: firefoxMatch[1] };
}
// Safari
const safariMatch = ua.match(/Version\/(\d+)/);
if (safariMatch) {
return { browser: 'Safari', version: safariMatch[1] };
}
// IE
const ieMatch = ua.match(/MSIE (\d+)/) || ua.match(/Trident\/.*rv:(\d+)/);
if (ieMatch) {
return { browser: 'IE', version: ieMatch[1] };
}
return { browser: 'Unknown', version: 'Unknown' };
}
注意事项
// 1. User-Agent 可以被伪造
// 不要完全依赖 UA 做关键逻辑判断
// 2. 某些浏览器可能隐藏 UA
// 使用特性检测更可靠
// 3. 微信内置浏览器
// 基于 Chrome 或 X5 内核,检测 micromessenger
// 4. 移动端 WebView
// 可能需要检测特定 APP 的 UA