Skip to content

Commit 9bfee91

Browse files
author
HouYuSheng
committed
feat(helper): add detectBrowser utils
1 parent 481fb9c commit 9bfee91

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

js/utils/helper.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,3 +265,35 @@ export function calculateNodeSize(targetElement: HTMLElement) {
265265
paddingSize, borderSize, boxSizing, sizingStyle,
266266
};
267267
}
268+
269+
/**
270+
* 检测当前浏览器,获得浏览器名称和版本
271+
* @returns {name: string, version: number}
272+
*/
273+
export function detectBrowser() {
274+
if (typeof navigator === 'undefined' || !navigator) return { name: 'unknown', version: 0 };
275+
const ua = navigator.userAgent;
276+
277+
// 缓存正则表达式
278+
const REGEX:{ [key: string]: RegExp } = {
279+
CHROME: /AppleWebKit.+Chrome\/([0-9.]+) Safari\/+/i,
280+
SAFARI: /AppleWebKit.+Version\/([0-9.]+) Safari\/+/i,
281+
FIREFOX: /Firefox\/([0-9.]+)/i,
282+
EDGE: /Edg\/([0-9.]+)/i,
283+
OPERA: /OPR\/([0-9.]+)/i,
284+
};
285+
286+
const keys = Object.keys(REGEX);
287+
for (let i = 0; i < keys.length; i++) {
288+
const key = keys[i];
289+
const match = ua.match(REGEX[key]);
290+
if (match?.[1]) {
291+
return {
292+
name: key.toLowerCase(),
293+
version: Number(match[1]?.split('.')[0] || 0)
294+
};
295+
}
296+
}
297+
298+
return { name: 'unknown', version: 0 };
299+
}

0 commit comments

Comments
 (0)