- ベストアンサー
ブラウザが判別出来ない。
お世話になっております。 JavaScriptの本を購入しました。 その本にブラウザ判定のスクリプトが掲載されており、それをそのままアップしたところ、私はIE6なのにIE4と判別されてしまいました。 下記がそのスクリプトです。 ちなみに、私はXPのIE6です。 このスクリプトはこれで完璧なのでしょか? また、出来ましたら、このスクリプトを試していただけたらと思うのですが・・・よろしくお願い致します。 <script language="JavaScript"> <!-- if( navigator.appVersion.charAt(0)==4){window.location.href = "nn4.html"} // NN Ver4 の場合 if( navigator.appVersion.charAt(0)==5){window.location.href = "nn5.html"} // NN Ver5 の場合 if( navigator.appVersion.charAt(0)==6){window.location.href = "nn6.html"} // NN Ver6 の場合 } if( navigator.appName.charAt(0)=="M"){ if( navigator.appVersion.charAt(0)==2){window.location.href = "ie2.html"} // IE Ver2 の場合 if( navigator.appVersion.charAt(0)==3){window.location.href = "ie3.html"} // IE Ver3 の場合 if( navigator.appVersion.charAt(0)==4){window.location.href = "ie4.html"} // IE Ver4 の場合 if( navigator.appVersion.charAt(0)==5){window.location.href = "ie5.html"} // IE Ver5 の場合 if( navigator.appVersion.charAt(0)==6){window.location.href = "ie6.html"} // IE Ver6 の場合 } //--> </script> <noscript>JavaScript を使用しています。JavaScript を有効にしてください。</noscript>
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
window.location.href = "***.html"のところを document.write(navigator.appVersion)に変えてみましょう。 少しは疑問が晴れるかも。 このスクリプトはハッキリ言って完全ではありません。 私のIEは6なのにie4.htmlに飛びます。 NN7もnn5.htmlに飛びました。 navigator.appVersion.charAt(0)を使うのが良くないんでしょう。 ところでIE2ってjavascript使えたっけ?
その他の回答 (4)
もう回答が出揃っているようですので、蛇足ですけど… ブラウザのバージョンを返すには、navigator.appVersionの先頭の値を取得するのでは不十分です。 IEの4~6まではそれで取得できる値が「4」ですし、Netscape6と7では「5」が返ります。 ブラウザをバージョンも含めて判別するには、navogator.userAgentでユーザーエージェントを取得して、その文字列の中からブラウザ名とバージョン情報を取得する必要があるでしょう。 Netscape7で確認した限りでは、navigator.appVersionだけでは、ブラウザの正確なバージョンが返す値に含まれないので、バージョンの判別ができません(userAgentを取得すれば判別可能です)。 また、Operaはnavigator.appNameで返す値を偽装して別のブラウザのように振舞うこともできますが、userAgentで返される値にはOperaであることやそのバージョンの情報などが含まれます。 こういった面から、userAgentを取得して、そこからブラウザとバージョンを判別するのがいいと思いますよ。 ついでですが… 質問文にあるスクリプトは、すでに指摘されているような部分(私も指摘した部分)の他に、大きな欠陥があります… Netscapeのバージョンですが、Netscapeにはバージョン5は存在しません。 開発途上でバージョン5は廃棄され、新しいレンダリングエンジンを搭載したNetscape6がNetscape4.xxの次期バージョンとしてリリースされているので、正式にはNetscape5というブラウザはリリースされていないんですね。 これが参考書にそのまま載っていたスクリプトの丸写しだったとしたら、お気の毒ですがそれは少々信用のおけない参考書なのではないかと思います… 参考まで…
お礼
ご回答ありがとうございます。 よ~くわかりました。 JavaScriptって、いろんなバージョンがあったりして、動作しないことが多々あり困ってました。 なお且つ、購入した参考書までにも裏切られ、おちこんでしまいましたが、どうにかなりそうです。ありがとうございました。 ちなみに、この参考書2003年6月6日発行のものです。今もどこかの書店にこの本が置いてあり、また誰かが私と同じ思いをするのかと思うと、虚しいです。
- BlueRay
- ベストアンサー率45% (204/453)
おっと、Mozillaの指摘を受けてみてみたら確かに…。 と言うことで、全てを対応したいのかどうかわかりませんが 以前回答した質問を参考に載せておきます。 以前回答の参考URLではMozilla判定方法も載っています。 情報不足で、すいません。itomizuさんどうもです。 ○質問:ブラウザを調べて分岐させる方法 http://oshiete1.goo.ne.jp/kotaeru.php3?q=335547 ○ブラウザバージョンチェックについて http://www.fureai.or.jp/~tato/DHTML/simple/part4/tips/browschk.htm
お礼
ありがとうございます。 上記の質問も見たのですが、イマイチ、知識がなくてピンと来なくて、四苦八苦しておりました。 何度も書き込みしていただきありがとうございます。 感謝致します。
- itomizu
- ベストアンサー率47% (8/17)
No.2です。 <!-- の次の行に if( navigator.appName.charAt(0)=="N"){ が必要じゃない? ついでに言うとOperaの判別も必要だよね。 私Operaユーザだし。 蛇足ですが、No.1の方が載せている参考URLのサンプル、Mozilla1.4で見るとNN5だって言われた。
お礼
><!-- の次の行に if( navigator.appName.charAt(0)=="N"){ が必要じゃない? そうなんです。 コレは、私のミスです。 丸写しにしたら800字を超えてしまい。 NNの低いバージョンのものを削除した時に消してしまいました。 サンプルを試してもらい感謝致します。
- BlueRay
- ベストアンサー率45% (204/453)
お礼
ご回答いただき、ありがとうございます。 おまけに、確認していただき、良かったです。 >window.location.href = "***.html"のところを document.write(navigator.appVersion)に変えてみましょう。 やってみます! >ところでIE2ってjavascript使えたっけ? 使えないような?