C#と諸々

C#がメインで他もまぁ諸々なブログです
おかしなこと書いてたら指摘してくれると嬉しいです(´・∀・`)
つーかコメント欲しい(´・ω・`)

2006/08/20 02:34
HTMLからJavaScriptファイル(以降、jsファイル)を利用する場合、以下のように記述する。

Hoge.jsをインクルードする場合に、HTMLに記述するタグ<script type="text/javascript" src="Hoge.js"></script>

jsファイルが別のjsファイルを利用する場合は、通常、以下のように記述する。

Hoge.jsがFoo.jsを利用する場合に、HTMLに記述するタグ<script type="text/javascript" src="Foo.js"></script>
<script type="text/javascript" src="Hoge.js"></script>


これで問題はないのだが、どうせならjsファイル自身に、インクルードのためのコードを含めてしまいたい。だが、JavaScriptにそのような構文は用意されていない。そこでどうするかというと、以下のように、”別のjsファイルをインクルードするためのHTMLのタグ”を出力するコードをjsファイルに記述すればよい。

Hoge.jsがFoo.jsを利用する場合に、Hoge.jsに記述するコードdocument.write("<script type=\"text/javascript\" src=\"/WebSite1/Foo.js\"></script>");

この時、scriptタグのsrc属性に指定するパスを絶対パスにしておけば、Hoge.jsを利用するHTMLがHoge.jsと同じ階層のディレクトリにあろうが違う階層のディレクトリにあろうが関係なく、正常に動作する。

このHoge.jsを利用するHTMLでは、Hoge.jsのインクルードのみ行えばよい。


prototype.jsとかをこの方法でインクルードするとClass.create();とかしたときにうまくいかず、Class is not definedになっちゃいますね。

2007.08.12 21:02 URL | null #- [ 編集 ]


prototype.js は使ったことないので、そのような現象が発生するとは知りませんでした。
情報を提供して頂き、ありがとうございました!

2007.08.12 21:36 URL | よこけん #Ay6tTHf6 [ 編集 ]












トラックバックURL↓
http://csharper.blog57.fc2.com/tb.php/14-d5c2a47e