3

事情起因

前端时间刚做完ipad兼容问题,本以为没问题了,然后又有客户反馈bug,

仔细想了一下原因,可能是ipad判断失效了,问了客户ipad系统是 13.2.2版本,长时间等待升级....

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

打印数据如下,

"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浏览器一模一样了。。

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

解决方案

蒙圈了半天,然后仔细对比了一下pc和ipad中safari的 navigator 的区别。还是发现了有一点不同的地方

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

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

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

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

所以要判断ipad 的话,我是这么修改的

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

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


旅图灬
905 声望43 粉丝

任何事物都有它的正反面,研究技术要全面