WebKit系Operaのブラウザ判別方法とか。

ブラウザエンジンを Presto から WebKit系へと変更した Opera 15 がリリースされています。

 → Opera ブラウザ(http://www.opera.com/ja/)

Windows版をインストールして試してみたところ、Opera 15 のユーザエージェントは、

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.52 Safari/537.36 OPR/15.0.1147.130

…と、こんな具合。バージョン 12.x では以下のようなものでした。

Opera/9.80 (Windows NT 6.1; WOW64) Presto/2.12.388 Version/12.15

ぱっと見て判るように、

  • 新しいOperaのユーザエージェントには "Opera" という文字列がない。
  • 代わりに "OPR" という文字列が入る。
  • "WebKit" や "Chrome" や "Safari" という文字列が入る。

というのが大きな違いです。

また、以前のバージョンには存在した window.opera というオブジェクトが、Opera 15では無くなっているっぽい。

なので、現在、JavaScriptなどでブラウザ判別を行っている場合、

  • window.operaオブジェクトの有無で Opera を切り分けている。
  • ユーザエージェント文字列("Opera" が含まれているかどうかなど)でブラウザを切り分けている。

…と、いずれの場合でも、新Opera は 旧Opera を切り分けるロジックには引っかからないというわけですね。言い換えると、既存の判別スクリプトに手を加えなくても、新・旧Opera は別物として処理される、と。

で、ここから先はスクリプトの組み方に依るのだけれど、おそらく既存のスクリプトでは、新Operaは「ChromeかSafariか、とにかくWebKit系ブラウザ」と判別されるのだと思います。

新Operaは「…とにかくWebKit系ブラウザ」なので、まあこのままでも問題は無いのだろうけれど、どうしても新Operaを検出したい! というときは、「ユーザエージェントに "OPR" という文字列が含まれるかどうか」で判定できますね。バージョンまで知りたいときは、文字列 "OPR/" に続く数字を取得すれば良いわけです。

カテゴリ: