1

ネイティブ/ストック Android 4.1 ブラウザーでのみ多くの JavaScript エラーが発生し、PHPを介してユーザー エージェント文字列を検出したいと考えています。

私はMobile_Detectライブラリを使用して OS、デバイス、ブラウザをチェックしていますが、ネイティブ Android ブラウザの検出はサポートしていません。

このトピックに関してSOには多数の投稿がありますが、答えはないようです。

次のようなエラーがたくさん表示されます。

Cannot set property 'webkitTransitionDelay'
Cannot set property 'webkitTransform'

...だから、このブラウザの jQuery Mobile ページ遷移をオフにしたいのですが、最初にそれを検出する機能が必要です。

それを検出する方法はありますか?検出したいのは OS ではなく、ネイティブ ブラウザ (Android とも呼ばれます) であることを強調しなければなりません。

4

1 に答える 1

0

私は以下を使用しています:

(preg_match('/^Mozilla\/5\.0.*Android\s[12]\..*\sMobile/i', $_SERVER['HTTP_USER_AGENT']) 
    && !preg_match('/\sChrom/i', $_SERVER['HTTP_USER_AGENT']))

古い Android プラットフォーム (1.x または 2.x) ( SVG をサポートしていない) の Android ブラウザーに一致させるため。

  • 「Chrome」と「Chromium」の両方を除外する「Chrom」 (後者は存在しない可能性があります)
  • 現在、Firefox には Android バージョンが含まれていません。つまり、上記と完全に一致していません。Android のバージョン番号の追加を開始する場合に備えて、以下に明示的な除外を追加しました。

いくつかのテスト文字列:

古い Android ブラウザ

Mozilla/5.0 (Linux; U; Android 2.3.5; en-gb; SAMSUNG GT-I9100/I9100BUKJ3 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

Android の Chrome

Mozilla/5.0 (Linux; Android 4.1.2; GT-I9100 Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36

Android 上の Firefox

Mozilla/5.0 (Android; Mobile; rv:26.0) Gecko/26.0 Firefox/26.0

Android 上の Opera Mini

Opera/9.80 (Android; Opera Mini/7.5.33361/34.788; U; en) Presto/2.8.119 Version/11.10 Mozilla/5.0 (Linux; U; Android 2.3.5; en-gb; GT-I9100 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

Android ブラウザのすべてのバージョン + Firefox を除く:

(preg_match('/^Mozilla\/5\.0.*Android\s\d\..*\sMobile/i', $_SERVER['HTTP_USER_AGENT']) 
    && !preg_match('/\sChrom/i', $_SERVER['HTTP_USER_AGENT'])
    && !preg_match('/\sFirefox/i', $_SERVER['HTTP_USER_AGENT']))

これは、使用されたテスト ユーザー エージェントと同じくらい良いものです。そのため、コメントで独自の情報を提供してください。

于 2013-12-18T10:50:04.737 に答える