前端时间刚作完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
的数值是5
it
pc环境下打印 navigator.maxTouchPoints
的数值是0
io
pc环境下,切换到移动端模式(Toggle device toolbar),打印 navigator.maxTouchPoints
的数值是1
safari
因此要判断ipad 的话,我是这么修改的
export function isIPad() { // 兼容 ipad 13.2.x版本 return /iPad/.test(navigator.userAgent) || (/Mac/.test(navigator.userAgent) && navigator.maxTouchPoints > 0) }
客户等着,只能先这么解决,各位还有啥比较正统正规的方法,不吝赐教。