Skip to content

Commit a46a70d

Browse files
committed
feat(help): fix browser detection order
1 parent 9bfee91 commit a46a70d

File tree

1 file changed

+12
-13
lines changed

1 file changed

+12
-13
lines changed

js/utils/helper.ts

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -274,22 +274,21 @@ export function detectBrowser() {
274274
if (typeof navigator === 'undefined' || !navigator) return { name: 'unknown', version: 0 };
275275
const ua = navigator.userAgent;
276276

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-
};
277+
// 正则表达式
278+
const BROWSER_REGEXES = [
279+
{ name: 'edge', regex: /Edg\/([0-9.]+)/i },
280+
{ name: 'opera', regex: /OPR\/([0-9.]+)/i },
281+
{ name: 'chrome', regex: /Chrome\/([0-9.]+)/i },
282+
{ name: 'safari', regex: /AppleWebKit.+Version\/([0-9.]+) Safari\/(?!.*(Chrome|Chromium|Edg|OPR))/i },
283+
{ name: 'firefox', regex: /Firefox\/([0-9.]+)/i },
284+
];
285285

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]);
286+
for (let i = 0; i < BROWSER_REGEXES.length; i++) {
287+
const { name, regex } = BROWSER_REGEXES[i];
288+
const match = ua.match(regex);
290289
if (match?.[1]) {
291290
return {
292-
name: key.toLowerCase(),
291+
name,
293292
version: Number(match[1]?.split('.')[0] || 0)
294293
};
295294
}

0 commit comments

Comments
 (0)