You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

UA字符串适配问题:完善移动/平板跳转逻辑及iPadPro适配修复

优化移动端/平板端UA检测与跳转脚本

这里有一个优化后的解决方案,既能覆盖更多平板UA,又能修复iPad Pro在Chrome里的误判问题:

优化后的代码

// 先检测平板设备
const isTablet = /(ipad|tablet|playbook|silk|kindle|surface|(android(?!.*mobile))|(crios.*ipad))/i.test(navigator.userAgent);
// 再检测移动设备(手机)
const isMobile = /(iphone|ipod|android.+mobile|blackberry|iemobile|opera mini)/i.test(navigator.userAgent);

if (isTablet) {
    window.location.replace("http://127.0.0.1/T/");
} else if (isMobile) {
    window.location.replace("http://127.0.0.1/M/");
}

关键改进点

  • 调整检测顺序:先判断平板,再判断手机。因为部分平板(比如iPad的某些浏览器UA)会包含Mobile关键词,如果先检测手机会被误判,优先检测平板能确保正确匹配设备类型。
  • 修复iPad Pro Chrome适配问题:专门添加了crios.*ipad的正则规则,Chrome for iOS(CriOS)的iPad设备(包括iPad Pro)即使UA里带有Mobile,也会被识别为平板,跳转至T目录。
  • 扩展平板UA覆盖范围:新增了kindle(亚马逊平板)、surface(微软Surface系列)等常见平板关键词,同时保留了原有安卓平板(不带mobile后缀)、PlayBook、Silk等规则,覆盖更多平板设备。
  • 完善移动设备匹配:补充了opera mini这类手机端专属浏览器的UA标识,让手机设备的检测更全面。

验证示例

拿你提供的iPad CriOS UA举例:

Mozilla/5.0 (iPad; CPU OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) CriOS/30.0.1599.12 Mobile/11A465 Safari/8536.25 (3B92C18B-D9DE-4CB7-A02A-22FD2AF17C8F)

这个UA会被crios.*ipad规则匹配,判定为平板,正确跳转至http://127.0.0.1/T/,不会再误跳移动端目录。

内容的提问来源于stack exchange,提问作者Kalxn Paraiso

火山引擎 最新活动