最新 JavaScript 判断 iPad 设备的 5 种实用方法(iPadOS 13+ 兼容)

为什么需要重新判断 iPad?

从 iPadOS 13 开始,Safari 浏览器将 navigator.userAgent 与桌面 Mac Safari 保持一致,且 navigator.platform 变为 "MacIntel",导致传统检测(如 /iPad/)失效。为适配这一变化,我们需要更可靠的方法。

1. 检测 MacIntel + 多点触控(推荐)

结合触摸能力与平台判断,是目前最稳定的方式:

function isIpadModern() {
  return navigator.platform === 'MacIntel'
    && navigator.maxTouchPoints > 1;
}

使用解释:navigator.platform === 'MacIntel' 判断桌面环境,navigator.maxTouchPoints > 1 判断触控能力,从而识别出 iPadOS 上的 “桌面 UA” Safari。

2. 检测触摸事件与 Mac OS User-Agent

通过判断是否为触摸设备,且 UA 包含 Intel Mac OS X:

function isiPadUA() {
  const touch = 'ontouchstart' in window || navigator.maxTouchPoints > 0;
  const macUA = navigator.userAgent.includes('Intel Mac OS X');
  return touch && macUA;
}

该方法兼容度好,适用于部分 UA 更复杂的情况。

3. 结合 iPad 旧版 UA

如果你希望兼容旧版 iPad(iPadOS 12 及以下),可加入传统 UA 判断:

function isiPadAny() {
  return /iPad/.test(navigator.userAgent)
    || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1);
}

这样能同时识别旧版及新版 iPad。

4. 使用专业库检测(如 WURFL.js)

如果你需要识别 iPad 型号甚至 Pro / Mini:

<script src="https://cdn.jsdelivr.net/npm/wurfl.js"></script>
<script>
  WURFL.load(function(wurfl) {
    if (wurfl.is_ipad) {
      console.log('Detected by WURFL: iPad');
    }
  });
</script>

借助专门数据库,适配性强、识别率高,但会增加额外依赖与加载时间。

5. 最优整合方案:组合判断

为最大兼容性,建议按以下顺序组合:

function detectIpad() {
  if (/iPad/.test(navigator.userAgent)) return true;
  if (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1) return true;
  return false;
}

这样既覆盖旧版 iPad,也适用于 iPadOS 桌面 UA 环境,兼顾稳定与简洁。

  • 不推荐 单纯依赖 UA 或 navigator.platform 判断。
  • 推荐方法 为检测 MacIntel + navigator.maxTouchPoints > 1。
  • 若需兼容老设备,可添加 /iPad/ 判断。
  • 如需高级型号识别,可选用 WURFL 等专业工具。

通过这些方法,你可以准确识别 iPad 设备,从而做出特定适配:如触控提示、界面优化等,提升用户体验与 SEO 优势。

评论