• ベストアンサー

ブラウザ環境で振り分ける

私が利用しているCGIではJavaScriptを使用しているのですが、MACを利用されている方から「正常に動作しません」との報告を受けましたので、下記方法で対処できればと考えております。 if(?){ 処理1 } else { 処理2 } Internet Explorer5.0以上のブラウザで、尚且つJavaScriptがonの場合には処理1を表示させます。条件が遭わなければ処理2を表示させたいと思っています。が、書き方がわかりません。ご指導のほど宜しくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ralf124c
  • ベストアンサー率52% (232/446)
回答No.2

 CGIはサーバ上で動作させるものですが、サーバからクライアントのJavaScript ON/OFF情報(=システム設定情報) を引っ張るなんて方法は聞いたことがありません。  もしできるならセキュリティ上問題だと思いますがどうなんでしょうか?  MacのIEは厄介な存在なのでときどき驚くほど基本的な操作が効かなかったりします(たとえば画像リンクのJavaScriptなど)。 そういう部分は「USER-AGENT」情報から判別して「花より実を取る」回避策をほどこすより他無いように思います。  記憶違いもあるかもしれませんので他の方の解答も待たれたほうがよいと思います。

MKNET
質問者

お礼

ご回答ありがとうございます。

その他の回答 (2)

  • qtea
  • ベストアンサー率77% (38/49)
回答No.3

ちょっと工夫したやり方としては… Internet Explorer5.0以上のブラウザで、尚且つJavaScriptがonの場合のCGIと 条件が遭わない場合のCGIを用意しておいて、 そのCGIにリンクをはっているHTMLで、呼び出すCGIを切り替えるという 方法があります。 (CGIを呼ぶ前に、どちらのCGIを動作させるかチェックして切り替えるページを用意するといった方法もあります) Internet Explorer5.0以上のブラウザで、尚且つJavaScriptがonの場合のCGIのURLをjon.cgi、 条件が遭わない場合のCGIのURLをjoff.cgiとしてあるとして… <script> //Internet Explorer5.0以上のブラウザか? function check_ie5(){ //ここのチェックは自前で容易してください。 //ブラウザ バージョン javascriptあたりで検索すれば良いと思います。 //OKの場合はtrueを、NGの場合はfalseを返します。 return false; } if(check_ie5()){ document.write('<a href="jon.cgi">.....</a>') }else{ document.write('<a href="joff.cgi">.....</a>') } </script> <noscript> <a href="jon.cgi">.....</a> </noscript> noscriptが未対応のブラウザだとダメですけどね^^; 参考URL http://www.tohoho-web.com/html/noscript.htm http://www.mozilla-japan.org/docs/web-developer/sniffer/browser_type.html http://www.umechando.com/tips/02.htm

MKNET
質問者

お礼

ご回答ありがとうございます。

noname#25358
noname#25358
回答No.1

 ブラウザがCGIに渡してくる「ユーザエージェント」を使えば、ブラウザの種類を判別できます。  変数 $ENV{'HTTP_USER_AGENT'} の中に、たとえば、"Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)" といった文字列が入っています。  詳しくはキーワード "ブラウザ ユーザーエージェント" で検索してみてください。  ただし、ユーザーエージェントはあくまで「ブラウザプログラムの自己申告」なので、嘘の場合もあります。(最近は少ないみたいですが)  それと、JavaScript がONになってるかどうかは、CGIからは分かりません。

MKNET
質問者

お礼

ご回答ありがとうございます。

関連するQ&A