• ベストアンサー

外部javascriptファイルをjavascriptから動的に呼び出したい

呼び出し元のURLによって動作を変えたいJAVASCRIPTがあります。 普段外部のJAVASCRIPTを呼び出すときはよくこうするのですが <script type="text/javascript" src="js.php?key=url"></script> これでは「key=url」が固定になってしまいます。そこで下記のように <script> var commentname=document.URL; var str=encodeURIComponent(commentname); document.write('<script type="text/javascript" src="read.php?key=',str,'"><\/script>'); </script> document.writeを使って無理やり外部Javascriptファイルの呼び出しスクリプトを書いているのですが、この書き方はどうもエレガントさにかけるというか、いまいち気に入りません。 もっとほかに良い方法がある気がするのですが、調べてもわかりませんでした。おわかりになる方がいらっしゃったらご教示頂けないでしょうか。

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

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

エレガントかどうかはともかく、多くのブラウザで動作する事の方が重要な気がします。 私の場合DOMを使っています。 function addScript (url){ var el = document.createElement("script"); el.setAttribute("src",url); el.setAttribute("charset","UTF-8"); document.getElementsByTagName("head").item(0).appendChild(el); } こうしておけば、簡単に外部スクリプトの追加が可能ですよね。 addScript("http://hogehoge.com/hogehoge.php?key="+key); DOMを使う理由は、タグの閉じ忘れ、"や'の間違い、閉じ忘れ等を極力防ぐ事が出来るからです。 scriptの中にscriptという文字列を書く場合は、"scr"+"ipt"のように分けて書く方が良いと思います。 参考まで。

petisuke
質問者

お礼

ありがとうございます。 これは追加が簡単になりますね。ライブラリにしておいて使いまわせそうです。

その他の回答 (1)

回答No.1

たいして変わりませんが <script type="text/javascript" id="xx"></script> <script> var commentname=document.URL; var str=encodeURIComponent(commentname); document.getElementById("xx").src="read.php?key="+str; </script>

petisuke
質問者

お礼

ありがとうございます。こちらの書き方のほうが綺麗ですね。

関連するQ&A