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)
}

客戶等着,只能先這麼解決,各位還有啥比較正統正規的方法,不吝賜教。

相關文章
相關標籤/搜索