web-dev-qa-db-ja.com

デスクトップとモバイルブラウザを検出する信頼性の高い方法

重複の可能性:
Javascriptでブラウザ検出を行うための最良の方法は何ですか?

基本的に次のことを実行したいと思います(JavaScriptまたはPHPで):

_if (desktop browser) {
     do x;
}
else {   // mobile browser
     do not do x;
}
_

ブラウザの使用 検出方法は推奨されません であることが知られています。より良い解決策は、 機能テスト を使用することです。私の質問は、モバイルブラウザがデスクトップバージョンと同じくらいスマートで強力になったので、デスクトップ以外のブラウザからデスクトップをフィルタリングするための理想的な排他的機能検出は何ですか?

条件付きチェックを逆にする、つまりif (mobile browser) {} else ...の方が問題が多いと思いますよね?

11
moey

美しいサイト からのGoogle検索の結果:

var isMobile = {
    Android: function() {
        return navigator.userAgent.match(/Android/i);
    },
    BlackBerry: function() {
        return navigator.userAgent.match(/BlackBerry/i);
    },
    iOS: function() {
        return navigator.userAgent.match(/iPhone|iPad|iPod/i);
    },
    Opera: function() {
        return navigator.userAgent.match(/Opera Mini/i);
    },
    Windows: function() {
        return navigator.userAgent.match(/IEMobile/i);
    },
    any: function() {
        return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows());
    }
};

if(isMobile.any()){
    // Mobile!
} else {
    // Not mobile
}

私は、機能検出がwayであり、実際にはひどいユーザーエージェントスニッフィングよりも好ましいとは主張しません。しかし、デバイスがモバイルと見なされるかどうかを判断する機能を検出している場合は、まったく新しい一連の問題にさらされています。

確認できませんpixel-ratio新しいデスクトップコンピュータは「網膜」またはスーパーHDである可能性が高いためです。確認できませんdevice-orientationそれはもはやモバイルに固有のものではないからです。一部のラップトップは値を返す可能性があるため、ジャイロスコープをチェックすることはできません(可能な場合)。

それらを分離しようとせずにすべてのプラットフォームで動作するウェブサイトを構築してください!

14
Rémi Breton

私はあなたがphpで get_browser() 関数を探していると思います。

Browscap.iniファイルでブラウザの情報を検索することにより、ユーザーのブラウザの機能を判別しようとします。

0
Vlad Preda