11

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

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

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

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

条件付きチェックを逆にif (mobile browser) {} else ...すると、もっと問題になるかもしれませんね。

4

2 に答える 2

14

A Beautiful Siteからのちょっとした 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
}

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

pixel-ratio新しいデスクトップ コンピューターは「Retina」またはスーパー HD である可能性が高いため、確認できません。device-orientationもはや携帯特有のものではないので確認できません。一部のラップトップは値を返す可能性があるため、ジャイロスコープを確認することはできません (できれば)。

プラットフォームを分離せずに、すべてのプラットフォームで動作する Web サイトを構築してください!

于 2013-01-21T14:18:50.167 に答える
0

PHP でget_browser()関数を探していると思います。

browscap.ini ファイルでブラウザの情報を検索して、ユーザーのブラウザの機能を判断しようとします。

于 2013-01-21T14:14:49.510 に答える