ipad系统更新到13.2.x后,怎么判断 ipad?

事情原由

前端时间刚作完ipad兼容问题,本觉得没问题了,而后又有客户反馈bug,前端

仔细想了一下缘由,多是ipad判断失效了,问了客户ipad系统是 13.2.2版本,长时间等待升级....浏览器

升级到13.2.3后,打印ipad navigator.userAgent字符串发现,里面熟悉的 /ipad字眼竟然没了!!!code

打印数据以下,ip

"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Safari/605.1.15"

omg,跟pc端的safari浏览器如出一辙了。。ci

上个月ipad发布的新版本,也不通知一下!!估计会有大批前端开发人员遇到不知名bug,集体蒙圈 😂😂😂开发

解决方案

蒙圈了半天,而后仔细对比了一下pc和ipad中safari的 navigator 的区别。仍是发现了有一点不一样的地方字符串

navigator.maxTouchPoints 返回当前设备可以支持的最大同时触摸的点数

ipad环境下打印 navigator.maxTouchPoints的数值是5it

pc环境下打印 navigator.maxTouchPoints的数值是0io

pc环境下,切换到移动端模式(Toggle device toolbar),打印 navigator.maxTouchPoints的数值是1safari

因此要判断ipad 的话,我是这么修改的

export function isIPad() {
  // 兼容 ipad 13.2.x版本
  return /iPad/.test(navigator.userAgent) || (/Mac/.test(navigator.userAgent) && navigator.maxTouchPoints > 0)
}

客户等着,只能先这么解决,各位还有啥比较正统正规的方法,不吝赐教。

相关文章
相关标签/搜索