web-dev-qa-db-ja.com

JavaScriptを使用してiPad ProをiPadとして検出する方法は?

次のようなJavaScriptを使用してiPadデバイスを検出できました。

_function isDeviceiPad(){
    return navigator.platform.match(/iPad/i);
}
_

これはiPadデバイスの検出には完全に機能しましたが、iPad Pro (10.5 inch)からチェックした場合、それがiPadであることを検出しません。

さらに調査するために、navigatorオブジェクトにドリルダウンし、platformuserAgentの両方をチェックして、次の結果を得ました。

_navigator.platform = 'MacIntel';
navigator.userAgent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15) 
 AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Safari/605.1.15)';
_

問題は、iPadではなく_navigator.platform = 'MacIntel'_(MacBook Proと同じ)が返されることです。これがMacBook ProではなくiPadであることを検出する方法が必要ですが、ナビゲーターは古いiPadの場合のようにiPadを返さないようです。

この問題をどのように修正できるか考えていますか?

6
Wonka

これには正規表現を使用できます。

var isIPadPro = /Macintosh/.test(navigator.userAgent) && 'ontouchend' in document;
1
Lesha Petrov

iPad Pro 10.5」デバイスを検出する最も簡単な方法は、"window.screen.height x window.screen.width = 1112 x 834"である画面サイズを確認することです。

しかし、なぜデバイスモデルを検出する必要があるのか​​と思います。モバイルブラウザを検出する場合は、次の質問をご覧ください。 モバイルブラウザの検出

1
Reza

コンデンサには、デバイス情報を取得するための便利なWebプラグインがあります( https://capacitor.ionicframework.com/docs/apis/device#example )。 iPad Proと通常のiPadを区別しませんが、このプラグインの使用と提案された画面サイズソリューションを組み合わせることができます。

これを自分で行いたい場合は、次のコードをご覧ください。 https://github.com/ionic-team/capacitor/blob/master/core/src/web/device ts

0
paulrostorp

それらを区別するために画面サイズを使用できるはずです。検出したい各iPadプロの真の価値を見つける必要があると思います。

window.screen.height
window.screen.width
0