0

HTTP_USER_AGENT文字列が[ブラウザバージョンx]以降に対応する場合は、CSSアニメーションを含むリモートスタイルシートをロードするように指定することで、大量のPHPコードを回避しようとしています。たとえば、CSSアニメーションがChrome 19以降でサポートされていることを知っていると、コードはChromeのバージョンが19より大きいかどうかを検出し、適切なスタイルシートをロードします。
これはPHPを使用して実行可能ですか?

4

3 に答える 3

2

これは1つの解決策ですが、変更を含めるために、ユーザーエージェント文字列のパーサーを時々更新する必要があります。エージェント文字列を使用するための合意された標準はないため、一般に、ユーザーエージェント文字列の解析は非常に難しく、ルックアップテーブルに帰着することがよくあります。

より将来性のあるアプローチは、たとえば、 Modernizrを使用してクライアント側でCSSアニメーションのサポートを検出し、その結果に基づいてスタイルシートをロードすることです。そうすれば、ブラウザ開発者が将来ユーザーエージェント文字列(の構造)を変更したい場合でも、気にする必要はありません。

于 2012-08-20T15:19:03.490 に答える
1

これにPHPを使用する必要がある場合は、必要な処理を実行する組み込み関数get_browser()があります。

ただし...を使用する場合get_browser()は、問題の悪い解決策であることに注意してください。

この機能を使用するには、最新のbrowsecap.iniファイルが必要です。これは基本的に、これまでにリリースされたすべてのブラウザとすべてのバージョンの機能を定義するテキストファイルです。

これの欠点は明らかです:

  • そもそも、browsecap.iniの最新のコピーを見つけてインストールする必要があります。
  • 新しいブラウザがリリースされるたびに更新する必要があります(新しいバージョンが頻繁にリリースされるため、これは非常に大きな作業です)。
  • 検出したいすべての機能が含まれているとは限りません。
  • ユーザーがユーザーエージェント文字列をマスクすると壊れます。

これらすべての理由から、get_browser()PHPベースまたはサーバー側のソリューションを使用しないことを強くお勧めします。

代わりに、他の人が言っているように、Modernizrライブラリを使用して調査する必要があります。これは、ブラウザで機能を検出する、サイトにインストールするJavascriptライブラリです。機能がサポートされているかどうかを具体的に確認するため、古くなることはありません。したがって、実際のブラウザが何であるかは関係ありません。

于 2012-08-20T15:36:49.800 に答える
0

デバイス記述リポジトリ(DDR)の使用を検討することをお勧めします。これは、ユーザーエージェント文字列を渡してそのユーザーエージェントの既知の機能のリストを取得できるアプリケーションまたはWebサービスです。

これの利点は、新しいユーザーエージェントが登場したときに独自のコードを更新し続ける必要がないことです。

最近、モバイルサイト開発に関するDinoEspositoのMSDN記事でDDRについて読みました。彼は、DDRの機能と性質について優れた記事を書いています。

PHPを使用していることは承知していますが、DDRの接続/クエリは言語に依存しない必要があります。

考えてみてください。これがお役に立てば幸いです。

于 2012-08-20T15:29:46.137 に答える