• ベストアンサー

ブラウザによって異なる外部javascriptを適応させるには?

現在作成しているページがあるのですが、 外部javascriptを読み込む仕様となっております。 ですが、javascriptがブラウザによって、 動作が異なることで頭を悩ませています。 ※firefox, ie6, ie7, operaの4つそれぞれ個別に指示したいと思っています。 従いまして、そこで考えたのが、推測なので、できるかどうかは分からないのですが、、、以下の2つの方法になります。 1.ブラウザ毎に一つのjsファイルを用意する。 →この場合、4つのブラウザに対応させる必要があるので、4つのjsファイルが必要になります。 →具体的な方法としては、一つの判別javascriptファイルを用意しておいて、その中でさらに4分岐させて、それぞれ別のjsファイルを読み込む? 以下がokweb内では、それらしいなと思いましたが、これはそのまま使うことができるのでしょうか。 http://okwave.jp/qa3365142.html 2.一つのjsファイル内で、ブラウザ毎に別々の命令文を書いておく。 →技術的に無理? おそらく、1番の方法が、私がネットで調べた限りは、有力そうなのですが、検索しても、非常に古い記事ばかりがヒットしました。 現在のトレンドともいうべき、最も信頼性の高いブラウザ判別の方法というのは何になるのでしょうか。 この場合、phpなど、サーバーサイドのプログラムは含まず、あくまでも、javascriptでの判別方法を具体的に助言していただければと思います。 宜しくお願いします。

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

  • ベストアンサー
回答No.1

> 2.一つのjsファイル内で、ブラウザ毎に別々の命令文を書いておく。 参照サイトの例でも、この方法を使われています。 別々の命令文がdocument.write()というだけです。 > 現在のトレンドともいうべき、最も信頼性の高いブラウザ判別の方法というのは何になるのでしょうか。 navigator.userAgentがアテになりませんが、それしか判断基準がなければしょうがないです。 window.opera window.all navigator.systemLanguage、navigator.language navigator.userAgent navigator.platform navigator.appVersion このくらいですかね。 それよりも、「使用したい関数を使用出来るかどうか」で判断するほうが、自分が知らないブラウザでも、正確な判断が出来ると思います。 if(window.addEventListener){ // }else if(window.attachEvent){ // } > ※firefox, ie6, ie7, operaの4つそれぞれ個別に指示したいと思っています。 SafariはGeckoエンジンは使用していませんが、navigator.userAgentに"Gecko"という文字が含まれています。 SafariをFxと同系列にするのか、その他にするのかで、判別方法は変わります。 厳密にするもよし、大雑把にしてif文の順番で調整でもよし。 if(window.all){ //IE、Operaともに実行 }else if(window.opera){ // }else{ // } if(window.opera){ //Operaのみ実行 }else if(window.all){ //IEのみ実行 }else{ // }

その他の回答 (1)

  • akanekor
  • ベストアンサー率52% (102/194)
回答No.2

dojo使ってください。 ブラウザ判断適度で入れるのも大げさな気がしますが、 この方が楽できます。 http://builder.japan.zdnet.com/sp/dojo-kickstart-2007/story/0,3800083421,20363667-2,00.htm

関連するQ&A