浏览器探测
不同浏览器对Web标准的支持程度不同,需要进行浏览器探测以提供兼容方案。
主流浏览器内核
| 浏览器 | 内核 | JS引擎 |
|---|---|---|
| Chrome/Edge | Blink | V8 |
| Firefox | Gecko | SpiderMonkey |
| Safari | WebKit | JavaScriptCore |
| Opera | Blink | V8 |
| IE | Trident | Chakra |
浏览器版本探测
// 获取浏览器类型和版本
function getBrowserInfo() {
const ua = navigator.userAgent;
let browser = '';
let version = '';
// Chrome
if (/Chrome\/(\d+)/i.test(ua)) {
browser = 'Chrome';
version = ua.match(/Chrome\/(\d+)/i)[1];
}
// Safari
else if (/Version\/(\d+).*Safari/i.test(ua)) {
browser = 'Safari';
version = ua.match(/Version\/(\d+)/i)[1];
}
// Firefox
else if (/Firefox\/(\d+)/i.test(ua)) {
browser = 'Firefox';
version = ua.match(/Firefox\/(\d+)/i)[1];
}
// Edge
else if (/Edg\/(\d+)/i.test(ua)) {
browser = 'Edge';
version = ua.match(/Edg\/(\d+)/i)[1];
}
// IE
else if (/MSIE (\d+)/i.test(ua)) {
browser = 'IE';
version = ua.match(/MSIE (\d+)/i)[1];
}
return { browser, version };
}
// 使用特征检测替代浏览器检测
const supportsES6 = typeof Symbol !== 'undefined';
const supportsAsync = typeof fetch === 'function';
const supportsPromises = typeof Promise !== 'undefined';