概要: Javascript で外部 JS ファイルを動的にロードするには。
Javascript で動的ロードをするには、
- XMLHTTPRequesst
- Flash を使用した通信
- JSONScriptRequest (script 要素の追加による読み込み)
- iframeHTTPRequest (iframe 要素の操作による読み込み)
あたりが思いつく。どれもこれも実際に使用したことが無いので、 細かいところまでは分かっていない。
で、分かってる範囲でメリット・デメリット書くと、
XMLHTTPRequest メリット 同期・非同期が選択できる
ステータスコードが取れる
デメリット ブラウザによって仕様が微妙に違う
クロスドメインで通信ができない
JSONScriptRequest メリット クロスドメインで通信ができる
DOM で script 要素を作成するだけで使用可能
デメリット 同期・非同期がブラウザによって違う (Opera は同期で読み込む)
ステータスコードが取れない (ファイルが見つからなくてもエラーが出ない)
iframeHTTPRequesst メリット 使用できるブラウザが多い
デメリット (X)HTML の Strict では使用できない
Flash を使用した通信 メリット クロスドメイン可能
デメリット Flash が使えないとそもそも動かない
こんな感じか。
iframeHTTPRequesst と Flash を使用した通信に関してはまったく分かってないので、 的外れなことを書いてる可能性が無くもない。なにか間違いがあったらコメントで。
JSAN が気に入らないので、自分専用のライブラリ書いているんだけど、 動的ロードの部分をどうするかが決まらない。
最初、script 要素による読み込みにしようかとも思っていたんだけど、 ステータスコードが取れないみたいなので、ちょっと問題がある。
参考までに JSAN の場合をあげると、JSAN は XMLHTTPRequest を使用していて、 ライブラリはローカルから読み込むと言う形になっている。
上記リストのデメリットに関しては、CGI の利用や、複数の組み合わせによって、 どうとでもなるような気がする。
うーん、どうしよう。
#FIXME