64

Web アプリを作成していて、バージョン 3.0 未満の Android デバイスでトランジション効果を無効にしたいと考えています。

ブラウザでJavascriptによってAndroidのバージョン番号を取得する方法はありますか? もしそうなら、どのように?

4

9 に答える 9

85

以下のコードを使用して、Android の 2 桁バージョンを取得します

var ua = navigator.userAgent;
if( ua.indexOf("Android") >= 0 )
{
  var androidversion = parseFloat(ua.slice(ua.indexOf("Android")+8)); 
  if (androidversion < 2.3)
  {
      // do whatever
  }
}

例えば

Mozilla/5.0 (Linux; U; Android 2.2.1; fr-ch; A43 Build/FROYO) AppleWebKit/533.1 (Gecko のような KHTML) バージョン/4.0 モバイル Safari/533.1

Android バージョン = 2.2 を返します

于 2012-09-14T08:48:57.770 に答える
9

十分な担当者がいないため、コメントできません... neikerのコードをに変更する必要があることを追加したかっただけです

var match = ua.match(/Android\s([0-9\.]*)/i);

Galaxy S3がユーザーエージェントでAndroidではなく「android」を返していたため、大文字と小文字を区別しないようにしました

于 2014-04-16T21:39:33.800 に答える
8

ここで説明されているユーザー エージェント文字列を確認できますwindow.navigator.userAgent: https://developer.mozilla.org/en/DOM/window.navigator.userAgent

実際に検出しようとしているのが、特定の機能をサポートするブラウザーのバージョンを持っているかどうかである場合は、ほとんどの場合、ブラウザーのバージョン検出ではなく機能検出を使用することをお勧めします。modernizr は、機能検出のための巨大なコード ベースであり、そのまま使用するか、特定の部分を借りるか、一般的な手法がどのように機能するかを学ぶことができます。

Google で検索すると、次のような Android のユーザー エージェント文字列が表示されます。

Mozilla/5.0 (Linux; U; Android 2.2.1; fr-ch; A43 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

/Android\s+([\d\.]+)/onの正規表現はwindow.navigator.userAgent、Android のバージョン番号を取得します。

于 2011-08-25T03:11:48.697 に答える
2

このコードは、ユーザー エージェントから Android のフル バージョンをチェックします。

var test = LowerThanAndroidVersion('4.4');
if (test) {
    alert('lower than android 4.4')
} else if (test == undefined) {
    alert('no android')
} else {
    alert('android 4.4 or higher');
}    

function LowerThanAndroidVersion(testversion) {
    //var useragent = 'Mozilla/5.0 (Linux; U; Android 4.3.1; en-gb; GT-I9300 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30';
    var useragent = navigator.userAgent;
    var androidpoint = useragent.indexOf('Android');
    if (androidpoint >= 0) {
        var rest = useragent.substring(androidpoint + 8, useragent.length);
        var version = rest.substring(0, rest.indexOf(';'));
        return (version < testversion) ? true : false;
    }
}
于 2014-10-30T20:01:31.400 に答える
2

Motorola のプレーヤー ユーザー エージェントには、次のものがあります。

Linux;Android ; Release/4.1.2

したがって、次の正規表現の使用を開始する必要がありました。

[a|A]ndroid[^\d]*([\d[_|.]]+\d)
于 2014-01-23T15:05:33.777 に答える
2

私はこの機能を作成し、さまざまなブラウザーとデバイスの Android 2.6.3、4.2.2、6.0.1 で非常にうまく機能しました。それは代替案になり得ると思います。

function check_android_version()
{
    var ua = navigator.userAgent; 
    ua = ua.toLowerCase();

    var and_pos = ua.search("android");
    if(and_pos == -1)
        return 0; //not android

    var pv_pos = ua.indexOf(";", and_pos);
    var versao = ua.slice(and_pos+8, pv_pos);

    return versao;
}

これは非常に簡単です。まず、「android」という単語を検索します。見つからない場合は 0 を返します (Android ユーザー エージェントではありません)。次に、最初の「;」を検索します バージョンの終わりを示す「android」位置の後。これらの位置が取得されると、「スライス」はバージョン番号を隔離し(「+8」は最終結果の「android」という単語を削除します)、戻ります。

誰かが欠陥を見つけた場合は、共有してください。

于 2017-01-09T22:40:08.280 に答える
1

Windows モバイルではユーザー エージェントに Android を含めることができるため、最初にデバイスが Android であるかどうかを確認することをお勧めします。

例: Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; ; ) AppleWebKit/ (Gecko のような KHTML) Chrome/ Mobile Safari/ Edge/.

これを確認する方法は 次のとおりですiOS / Androidオペレーティングシステムの検出

于 2016-08-17T10:49:12.723 に答える