Discussions

Qライブラリの読み込み

特定のタイミングでライブラリを読み込むって出来ますか?
たぶんできないと思う・・・

AAnswer to: ライブラリの読み込み

yamachan360

最初に読み込むときに条件により… ですとscriptタグをdocument.writeしてしまうことがおおいですが、Strict XHTMLでは実行できなかったり「特定のタイミング」で自由に実施するわけにはいきませんね。

いわゆる Ajax 的なコードで、XMLHttpRequest で取ってきたライブラリ(jsコード)の中身を eval() で実行してみるのはどうでしょうか。クロスドメインへの対応が面倒ですが、jsdo.it でやる場合には問題ないとおもわれます。

ちょうど手元にあった古いdojoのソースでは、以下のような関数でライブラリの追加を実行しているようです。非同期な読み込みコードですので、非同期に幾つか読み込ませたい場合には、完了を待つなど追加のコードが必要になりそうですね。

var injectXHRCode = function(src){
var xhr = new XMLHttpRequest();
xhr.open("GET", src, false);
xhr.send();
eval(xhr.responseText);
}

以上、自分では当サイトにおける動作を試していないので、ハズしていたらスミマセン。

yamachan360

↑「非同期ではない読み込みコードですので、」の間違いでした。

さて、このサンプルコードを jsdo.it で動作させてみました。
ライブラリも通常のコードと同じように配置したほうがメンテナンスも楽かと思ったのですが、html までついてくるので、その除去コードもはいって少し間抜けなコードになっています。

test00 という関数がライブラリのほうで定義されていて、それを呼ぶだけの簡単なサンプルです。

Post a question

You can post JavaScript, HTML, CSS related questions with attached reference to actual codes and get the answers likewise.

Ask a question

  • 1. Click the ‘Post a question’ above

  • 2. Enter question details, reference code, and click ‘Add question’ button

  • 3. Question will be paired with the code on display

Add an answer

  • 1. Choose a question

  • 2. Enter answer details, attach the reference code and click ‘add answer’ button

  • 3. Your answer will accompanied with attached code

Tag