事情起因
前端时间刚做完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)
}
客户等着,只能先这么解决,各位还有啥比较正统正规的方法,不吝赐教。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。