前端時間剛作完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) }
客戶等着,只能先這麼解決,各位還有啥比較正統正規的方法,不吝賜教。