0

テンプレートに JavaScript を追加して、ユーザーがどのようなデバイス (スマートフォン、タブレット、または PC) で Web サイトを表示するかを検出したいと考えています。

現在、私はjavascriptでそれをやろうとしています、ここにあります:

var smartPhone = "smartphone";
var Ipod = "ipod";

var userDevice = navigator.userAgent.toLowerCase();

function DetectPhone()
{
   if (userDevice.search(smartPhone) > -1)
      return true;
   else
      windows.location = "/pageforphone.aspx";
}

function DetectIpod()
{
   if (userDevice.search(Ipod) > -1)
      return true;
   else
      windows.location = "/pageforpod.aspx";
}

コードを正しく書きましたか?正直なところ、iPhoneはありません...

もちろん、これらが Php や Asp.net で完成していればもっと良いのですが、パーム デバイスでは常に javascript をオフにしているというのは本当でしょうか? また、iPhone、iPod、またはその他のタブレットは非常に似ていると思いますが、それらのデバイスに同じ再開発ページを使用しても問題ありませんか? 実際には、それらの違いと、Web ページを再作成するときに注意すべきことをよく理解していません。

4

3 に答える 3

1

ブラウザ スニッフィングが許容されるという質問の前提は誤りです。達成しようとしていることを自信を持って達成できないという理由だけで、ブラウザ スニッフィングを行うべきではありません。ユーザー エージェント文字列は不変ではなく、多くの場合、クライアント マシンにインストールされたプラグインまたはクライアント自身によって変更されます (悪いプログラマーは UA 文字列に基づいてサイトからロックアウトする可能性があるため、珍しいことではありません)。

ユーザーがどのデバイスであるかを尋ねるのではなく、そのデバイスがどのような機能を備えているかを尋ねる必要があります。これにより、機能の検出が行われます。ここでは、X の実行に着手し、ユーザー エージェントが X を実行できるかどうかをテストしてから、X を実行するかどうかに進みます。たとえば、次のようになります。

if ( !!document.createElement("video").canPlayType ) {
  console.log( "HTML5 Video Supported" );
}

これは、ユーザーが iPhone、iPad、Windows タブレット、または HTML5 対応ブラウザーを使用しているかどうかを確認するよりも信頼性が高くなります。Modernizrなどのツールを使用して、これらの多くのテストを実行できます。実際には 40 以上あります。

于 2012-04-24T00:07:26.430 に答える
0

市場には多くのモバイル デバイスがあり、各デバイスには複数のブラウザがインストールされています。ユーザーエージェント文字列で「iPhone」に資金を提供するよりも、いくつかのライブラリを使用することをお勧めします (私は Opera ブラウザーで Android フォンを使用しています)。

例えば:

  • http://detectmobilebrowsers.mobi/
  • http://wurfl.sourceforge.net/ - サーバー側には、サポートされているデバイスと機能の大規模なデータベースがあります
  • http://modernizr.com - クライアント サイズの JavaScript ライブラリで、ブラウザーで利用可能な HTML5 機能を検出します (地理位置情報 API、ビデオ、インデックス DB、ローカル ストレージなど)。

どちらも、リリースされた最新のモバイル デバイスで定期的に更新され、特定のデバイスでサポートされている機能に関する情報を提供します。

于 2012-04-24T00:30:30.753 に答える
-1

これは、JavaScriptを使用してiOSデバイスを検出する方法です

<script type="text/javascript">
    var agent = navigator.userAgent.toLowerCase();
    var isiPhone = ((agent.indexOf('iphone'))!=-1)

    if (((agent.indexOf('iphone'))!=-1) {
        document.location = "mobile.aspx?device=iphone";
    }

    if (((agent.indexOf('ipod'))!=-1) {
        document.location = "mobile.aspx?device=ipod";
    }

    if (((agent.indexOf('iPad'))!=-1) {
        document.location = "mobile.aspx?device=ipad";
    }
</script>
于 2012-04-24T00:11:18.460 に答える