• ベストアンサー

Javascriptで各ブラウザを厳密に区別する方法

JsvascriptでIE,FireFox,Safari,Opera,Chromeのそれぞれのブラウザを厳密に区別する方法が知りたいです。 それが困難な場合はIE/FireFoxとその他のブラウザを区別する方法がわかれば構いません。 最近Javascriptを触っていませんが2008年後半から今までで何かJavascriptで変化したことはあるのでしょうか? 2007年はAjaxというものが出てきましたが、その後 目新しいものがあったでしょうか?それとも今は減少中?

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

  • ベストアンサー
noname#87714
noname#87714
回答No.4

think49さんが一番上で挙げられているスクリプトがたぶん一番厳密にブラウザを区別できる方法です。バージョンまで見られますから。 Selectors API はもうすぐ Web 標準です。(仕様の草案が Last Call) http://www.w3.org/TR/selectors-api/ 一般的なブラウザは現在のバージョンか次のバージョンで全部サポートしますし、何より簡単に書けるので、XPath より広く使われるようになると思います。 それから次に各ブラウザの実装が揃っているのが postMessage だと思います。IE 8 でも使えますし。 https://developer.mozil la.org/Ja/DOM/Window.postMessage その次が DOM Storage です。 http://d.hatena.ne.jp/amachang/20080924/1222239494 http://d.hatena.ne.jp/javascripter/20090424/1240562692 ってこのへんは「2008年後半から今まで」の話ではないですね。ご存じでしたら失礼しました。

すると、全ての回答が全文表示されます。

その他の回答 (4)

  • think49
  • ベストアンサー率59% (285/482)
回答No.5

#1です。 >> #4 edvakfさん > Selectors API はもうすぐ Web 標準です。(仕様の草案が Last Call) そうだったのですか。IEの独自実装だと思いこんでいました。 #1 の「「Selectors API」はWeb標準実装ではありません。」は撤回します。 失礼しました。

すると、全ての回答が全文表示されます。
  • yuu_x
  • ベストアンサー率52% (106/202)
回答No.3

>又は、メソッド、プロパティがサポートされているか否か、調べ、なければ別の方法を探る。この方法が一番堅実と思います。 プロパティでブラウザ判別という意ではないので、一応。 スクリプトを走らせる際に、ブラウザが何かなど、どうでもいいことなのだともいます。はっきりと線を引くことができたらいいんですけどね。

すると、全ての回答が全文表示されます。
  • yuu_x
  • ベストアンサー率52% (106/202)
回答No.2

ユーザエージェントは、どうにもならないとき意外は使用しないほうが良いでしょう。単に、ブラウザの詳細を取得したい場合は別かもしれませんが、それでも厳密に得ることは難しいです。 IE との区別でしたら、最近この掲示板でも使われている、コンパイラステートメントがあります。 ex.) /*@cc_on @if(1) // IE 4+ @else@*/ // その他 /*@end@*/ http://msdn.microsoft.com/ja-jp/library/eb0w91wa(VS.80).aspx ブラウザごとというわけではありませんが、言語ごとに、MIME で分けることもできます。 text/vbscript : IE text/jscript : IE, Opera, Safari application/javascript : IE は未サポート(将来的にサポートされる可能性があるので、厳密ではない) 又は ビヘイビア、IE 独自のイベントハンドラなどもあります。 又は、メソッド、プロパティがサポートされているか否か、調べ、なければ別の方法を探る。この方法が一番堅実と思います。 プロパティに関して言えば、ご存知の方も多いかもしれませんが、Opera は window.opera オブジェクトを持っているので、その有無でも区別できます。 後は、<!--[if lte IE 6 ]><![endif]--> とか。 まだ、知らないこともありますが、今のところこのくらいです。

すると、全ての回答が全文表示されます。
  • think49
  • ベストアンサー率59% (285/482)
回答No.1

> JsvascriptでIE,FireFox,Safari,Opera,Chromeのそれぞれのブラウザを厳密に区別する方法が知りたいです。 一般的にはユーザエージェントで判別します。 JavaScript によるユーザエージェント判別 http://homepage2.nifty.com/magicant/sjavascript/uai-spec.html ただし、ユーザエージェントは設定で変更できるので、UA固有のオブジェクトで判別する事も出来ます。 JavaScript/情報の取得/ブラウザ振分け(オブジェクトの有無) - TAG index Webサイト http://www.tagindex.com/javascript/user/dist1.html > 最近Javascriptを触っていませんが2008年後半から今までで何かJavascriptで変化したことはあるのでしょうか? まだ試していませんが、IE8 で実装された「Selectors API」が大変興味深いです。 jQueryのようにCSSセレクタを渡すことで対応するノードを返します。 IE8 で実装された Selectors API とは何か? - IT戦記 http://d.hatena.ne.jp/amachang/20080306/1204787459 が、「Selectors API」はWeb標準実装ではありません。 類似機能として「DOM3 XPath」に期待しています。 XUL Apps > Tips > DOM3 XPathをノードの検索に活用する - outsider reflex http://piro.sakura.ne.jp/xul/tips/x0032.html XPathでノードを拾うもので、CSSセレクタよりも汎用性があります。 現状でもライブラリを使えば、XPathを利用できますが、やはり標準実装の方が安心できますね。 JavaScript-XPath をリリースしました!さあ、あなたも XPath を使おう!(解説付き) - IT戦記 http://d.hatena.ne.jp/amachang/20071112/1194856493

すると、全ての回答が全文表示されます。

関連するQ&A