跳转到内容

是否为移动设备

ts
/**
 * 判断当前设备是否为移动设备
 */
export function isMobileDevice() {
  // 方法1:User-Agent(主判断)
  const ua = navigator.userAgent
  const isMobileUA =
    /Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini|Mobile|mobile/i.test(
      ua,
    )

  // 方法2:maxTouchPoints(辅助)
  const hasTouch =
    'maxTouchPoints' in navigator
      ? navigator.maxTouchPoints > 1
      : 'ontouchstart' in window

  // 如果 UA 明确是移动设备,直接返回 true
  if (isMobileUA) return true

  // 如果 UA 不明确(如 iPadOS 隐藏 Mobile),但有高触点,也视为移动
  if (hasTouch && navigator.maxTouchPoints >= 5) return true

  return false
}