• ベストアンサー

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

  • ほとんどのブラウザに対応したキーイベントのプログラムをJavascri

    ほとんどのブラウザに対応したキーイベントのプログラムをJavascriptで書きたいのですが、 IEではwindow.eventは使えましたがFireFoxなどでは定義されていないエラーになります。 ブラウザごとのキーイベントについて知りたいです。 IE,FireFox,Safari,Chrome,Opera,Netscape,Other

  • JavaScriptで変更されたくない変数(定数)の書き方

    Javascriptで、変更されたくない変数(定数)を使いたいのですが、どうすれば良いのでしょうか? IE,FireFoxの両方で可能な方法が知りたいです。 できれば、Opera,Safari,Chromeも使えたら・・・ 無理でしょうか?

  • Windowsのブラウザ

    Windowsのブラウザで IE firefox Chrome Sleipnir Opera safari 以外でオススメのものを教えてください。

  • 最速ブラウザ

    Google ChromeやFirefox、Safari、Opera、Web Kit、IE9等 様々なブラウザがありますが、2012年7月現在、最速はどれでしょうか? くだらない質問ですが暇なときにでも回答してくれるとありがたいです。

  • 各ブラウザでフレームのソースを見たい。

    ChromeやSafariではフレームのソースというものがあるので、 フレームを使ったページではフレーム内のソースを見ることができますが、 IE,FireFox,Operaなどは、どのようにして見たらよいでしょうか? あとブラウザのシェアや動向が気になるので、お勧めのサイトとかご存じでしたら教えてください。 タブブラウザを含めると相当な量になりますが、何とかエンジン?で区別すれば大まかな派閥がわかるのでしょうか。

  • JavaScript でページズーム

    IE7/IE8、FireFox3.x、Safari4.x、Google Chrome、Opera,等主要ブラウザが、ページズーム機能が搭載されました。 ブラウザのズームボタンを押せば良いことですが、ページ内に目立つボタンを設置してページズームをコントロールしたいと思います。 ページズームは JavaScript でコントロール出来るのでしょうか、もしくは、JavaScript のライブラリ等が有れば、アドバイスを頂ければ幸いです。 もしかするとページズームは、ブラウザ箇々の機能になる為。JavaScript ではコントロールが出来ないのでしょうか。

  • 【javascript クロスブラウザ】処理中はカーソルを砂時計にしたい

    漠然とした言い方ですが、javascript実行中はカーソルを砂時計にしたいです。 すごく具体的な例を示すと、new Ajax.Request実行直前にカーソルを 砂時計に、onSuccessに指定したfancitonの最後でカーソルを デフォルトに戻したいです。 基本的な動作を検証するhtmlを書いてみました。 <html> <head> <style> <!-- div { height: 100%; width: 100%; } --> </style> <script type="text/javascript"><!-- function pleaseWait(){ document.body.style.cursor = 'wait'; setTimeout(function(){document.body.style.cursor = 'default';},2000); } //--></script> <head/> <body> <div onmousedown="pleaseWait();"> </div> </body> </html> windows環境で、IE6,FireFox3,Opera9,Safari(3.2.1),Google Chrome で試してみました。ブラウザ毎の結果を以下に記します。 ■IE,FireFox クリック後、2秒間は砂時計のカーソルになり、 その後元に戻りました。(これが期待している動作です。) ■Opera なんの反応もありませんでした。 ■Safari,Google Chrome クリック後、砂時計になり、マウスを動かさなければ砂時計のまま。 マウスを動かせば、元に戻る。 opera,Safariでも期待した結果を得るにはどうしたら良いでしょうか? 名案ありましたら教えてください。

  • Flashの再生に対応したブラウザを教えてください

    Flashプレーヤーでの再生に対応したブラウザを教えてください。 今現在、ダウンロードできるものに限ります。 海外のブラウザでもかまいません。 こちらで把握しているのは、 ■FireFox ■IE ■chrome ■netscape ■opera ■safari ■flock 以上7つです。

  • インターネットブラウザ

    インターネットブラウザ Internet Explorer、Firefox、Google chrome、opera、safari など・・・ あなたはどのインターネットブラウザを使っていますか?どれが使いやすいと思いますか? ちなみに自分はFirefoxを使っています。

  • 各ブラウザのファイルサイズ

    こんにちは。 Win7,IE9を使用しているのですが、 ほかのブラウザーに乗り換えようと思っております そこで質問なのですが、 IE,Firefox,Chrome,Opera,Safari,sleipnir のファイルサイズをご存知の方はいらっしゃいませんか。 一部でもいいのでご存知の方いましたらお教えいただけると幸いです また、お勧めのブラウザ等ありましたら一緒に教えてくれると嬉しいです。

専門家に質問してみよう