• ベストアンサー

条件分岐で、読み込む外部スクリプトを切り替えることは可能でしょうか?

外部化したjavascriptを用いるのですが、 条件分岐によってどの外部スクリプトを読み込むかを切り替えることは可能でしょうか? そういった表記方法は見たことが無いのですが・・・

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

  • ベストアンサー
  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.1

一応可能の様です。 DOMを使ってheadタグにscriptタグを追加してあげればOKです。 以下は外部スクリプトを動的に読み込むサンプルです。 -- HTMLファイル -- <?xml version="1.0" encoding="shift_jis" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis" /> <script type="text/javascript"> function loadExternalJS(scriptName){ var scriptElement = document.createElement("script"); scriptElement.setAttribute("type", "text/javascript"); scriptElement.setAttribute("src", scriptName); document.getElementsByTagName("head")[0].appendChild(scriptElement); } </script> <title>Sample</title> </head> <body> <input type="button" onclick="loadExternalJS('a.js');" value="a.jsを読み込む" /><br/> <input type="button" onclick="loadExternalJS('b.js');" value="b.jsを読み込む" /><br/> <input type="button" onclick="func();" value="func()を呼び出し" /> </body> </html> -- a.js -- function func(){ alert("これはa.jsのfunc()です。"); } -- b.js -- function func(){ alert("これはb.jsのfunc()です。"); } 動作はIE7とFirefox2.0で確認していますが、他のブラウザで動く保証はないです。 ※Firefox2ではappendChildしてからJSファイルの内容が反映されるまで多少時間がかかるようです。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

>条件分岐によってどの外部スクリプトを読み込むかを切り替える のも意味があるとは思いますが、共通のスクリプトを読んでおいて 条件分岐によって適用部分を変えるほうが効率的かもしれませんね ライブラリだって必要な部分しか読まないってわけではないですよね?

関連するQ&A