iPad safariでユーザーエージェントを取ろうとしたときにうまくとれないことがあったので紹介します。
そもそもiPadのユーザーエージェントには必ず「iPad」の文字が含まれているだろうと思っている人は多いのではないでしょうか?
僕も以前までそうでした。
ですがiOS13以降ではsafariだとユーザーエージェントに「 iPad 」の文字がないためにすり抜けてしまいます。
いままでの書き方
以前は下記のようにスマートフォンとタブレットのユーザーエージェントを書いていました。
if(navigator.userAgent.indexOf('iPhone') > 0 || navigator.userAgent.indexOf('iPod') > 0 || (navigator.userAgent.indexOf('Android') > 0 &&){
~スマホ用の処理~
}else if (navigator.userAgent.indexOf('iPad') > 0 || navigator.userAgent.indexOf('Android') > 0){
~タブレット用の処理~
}
この書き方はiOS 12までは上記の方法で良かったのですが・・・。
いまでは通用しなくなっています。。
iOS13以降ではユーザーエージェントに「 iPad 」は使えない
iOS13以降ではsafariだと「iPad」で処理ができないため下記のように記述を追加します。
if (navigator.userAgent.indexOf('Safari') > 0 && navigator.userAgent.indexOf('Chrome') == -1 && typeof document.ontouchstart !== 'undefined') {
~iPadのiOS13以降の処理~
}
コメント