• ベストアンサー

Operaの判別

Operaを判別したくて、以下のようなサンプルをもらってきたんですが。 <以下、サンプル> // _op6: trueならOpera 6以下 _op6=window.opera && !document.documentElement; <サンプルここまで> 「window.opera」については、Opera特有のプロパティであることが解説されていたのでとりあえず納得したのですが、「document.documentElement」については特に解説がなくてさっぱり意味がわかりません。 「document.all」とか「document.getElementById」とかでIEとNNを判別する方法と同じで、「document.documentElement」が扱えるブラウザかどうかということを判断したいってことなのかなぁ、と思うのですが。 でも、それがどうしてなのかもわからないので、確信が持てなくて悩んでます。 何のことを指しているのでしょうか? わかる方、よかったら教えてください。 おねがいします。

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

  • ベストアンサー
  • the845t
  • ベストアンサー率33% (246/743)
回答No.1

どうもdocument.documentElementは、Opera7以降のみ実装のようですね。 ですので、その場合、Opera6以前を対象にしたものかと。 で、document.documentElementはなにかというと、 ブラウザの表示部分のサイズなどを測るために使うようです。 DOMによるものみたいですが、詳しくは不明。 参考になれば幸いです。

bridgewood
質問者

お礼

早速の回答ありがとうございます。 つまり、「document.documentElement」がないことを判断してOpera6以前かどうかを調べているってことですね。 参考になりました。

その他の回答 (1)

回答No.2

ブラウザ判定のサンプルを示します。 ------------------------------ // data. 2003.8.14 // properties. var apc=navigator.appCodeName; var apn=navigator.appName; var apv=navigator.appVersion; var ua=navigator.userAgent; var pf=navigator.platform; var vns=apv.substr(0,3); var vnsd=apv.substr(0,4); var b="?"; var p="?"; // platform. if(( apv.indexOf("Macintosh")>=0 )||( apv.indexOf("Mac")>=0 )) p="mac"; if(( apv.indexOf("Windows")>=0 )||( apv.indexOf("Win")>=0 )) p="win"; // web browser. if( ( apn=="Microsoft Internet Explorer" ) && ( ua.indexOf("Opera")<0 ) && ( ua.indexOf("iCab")<0 ) && ( document.all ) ){ b="ie"; if( ua.indexOf("MSIE 4")>=0 ) b="ie4"; if( ua.indexOf("MSIE 5")>=0 ) b="ie5"; if( ua.indexOf("MSIE 6")>=0 ) b="ie6"; if( ua.indexOf("MSN 6")>=0 ) b="msn6"; }else if( ( apn=="Netscape" ) && ( ua.indexOf("Opera")<0 ) && ( ua.indexOf("iCab")<0 ) ){ b="ns"; if(( vns>=4 )&&( vns<4.5 )&&( document.layers )) b="ns4-4.4"; if(( vns>=4.5 )&&( vns<5 )&&( document.layers )) b="ns4.5-4.9"; if(( vns>=5 )&&( vns<6 )&&( !document.all )&&( document.getElementById )) b="ns6"; if(( ua.indexOf("Netscape 7")>=0 )||( ua.indexOf("Netscape/7")>=0 )) b="ns7"; }else if( ua.indexOf("Opera")>=0 ){ b="op"; if(( ua.indexOf("Opera 6")>=0 )||( ua.indexOf("Opera/6")>=0 )) b="op6"; if(( ua.indexOf("Opera 7")>=0 )||( ua.indexOf("Opera/7")>=0 )) b="op7"; }else if( ua.indexOf("iCab")>=0 ){ b="cb"; if(( ua.indexOf("iCab 2.9")>=0 )||( ua.indexOf("iCab J/2.9")>=0 )) b="cb2.9"; } ------------------------------ このスクリプトをトップに組み込むと、変数 b と p にそれぞれブラウザと OS が格納されます。 IE 5 なら if(b=="ie5"){ scripts... } で、IE 5 以降なら判定に "ie6" や "msn6" を追加します。 そんな感じで、Opera の場合は 6, 7, それ以外が "op6", "op7", "op" で判別できるようになってます。 userAgent と DOM をごちゃまぜにしたものですが、それなりに判別がきくでしょう。 よろしければ、ご自分で Safari や Mozirra も判別できるよう改変してください。

bridgewood
質問者

お礼

回答ありがとうございます。 やっぱりuserAgentで判別するのが無難ですねぇ。

関連するQ&A