fix(sdk): 设备检测顺序修订(iPad/Firefox 平板先判)+ FxiOS 前移
- device_type:iPad/Tablet 先于 Mobile/Android/iPhone 判(真实 iPad UA 恒含 Mobile 串、Firefox Android 平板显式 '; Tablet;',旧顺序误判手机) - browser:Firefox/FxiOS 前移至 Safari 之前(iOS Firefox UA 尾部恒含 Safari/,旧顺序为死代码) - 测试 23 过(翻转 iPad 锁定测试 + 新增 Android 平板、iOS Firefox 两条) Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
+7
-4
@@ -53,8 +53,10 @@ export function parseUtm(search: string): Record<string, string> {
|
||||
}
|
||||
|
||||
function detectDeviceType(ua: string): string {
|
||||
if (/Mobile|Android|iPhone/.test(ua)) return "手机";
|
||||
// iPad/Tablet 先判(规格修订):真实 iPad UA 恒含 Mobile 串、Firefox Android 平板
|
||||
// 显式 "; Tablet;"——若先判 Mobile/Android 会把它们误归为"手机"
|
||||
if (/iPad|Tablet/.test(ua)) return "平板";
|
||||
if (/Mobile|Android|iPhone/.test(ua)) return "手机";
|
||||
return "PC";
|
||||
}
|
||||
|
||||
@@ -68,13 +70,14 @@ function detectOs(ua: string): string {
|
||||
}
|
||||
|
||||
function detectBrowser(ua: string): string {
|
||||
// MicroMessenger 必须最先测:微信 WebView 的 UA 内嵌 Chrome/Safari 引擎串,
|
||||
// 与 "Edg 必须先于 Chrome" 同理(后测永远轮不到)。
|
||||
// MicroMessenger 最先测:微信 WebView 的 UA 内嵌 Chrome/Safari 引擎串;
|
||||
// FxiOS(iOS Firefox)先于 Safari 测:其 UA 尾部恒含 Safari/——与 "Edg 必须先于
|
||||
// Chrome" 同一死代码模式,后测永远轮不到。
|
||||
if (/MicroMessenger/.test(ua)) return "WeChat";
|
||||
if (/Edg(e|A|iOS)?\//.test(ua)) return "Edge";
|
||||
if (/Chrome\/|CriOS\//.test(ua)) return "Chrome";
|
||||
if (/Safari\//.test(ua)) return "Safari";
|
||||
if (/Firefox\/|FxiOS\//.test(ua)) return "Firefox";
|
||||
if (/Safari\//.test(ua)) return "Safari";
|
||||
return "";
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user