以下のようにjavascript内で動的にjqueryを読み込みたいです。


■html内
<script type="text/javascript" src="test.js"></script>

■test.js
var head = document.getElementsByTagName("head");
var script = document.createElement("script");
script.setAttribute("src","http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js");
script.setAttribute("type","text/javascript");
document.head.appendChild(script);

$(function(){
alert('test');
});

結果としては、
http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js
を読み込むよりも先に
$(function(){
alert('test');
});
が読まれてしまい
「ReferenceError: $ is not defined」
というエラーがでます。

setTimeout()を使い遅らせる事で実行は成功しますが、それ以外で実行できる方法があれば教えて頂きたいです。
宜しくお願い致します。

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2015/05/12 19:58:54
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:a-kuma3 No.2

回答回数4973ベストアンサー獲得回数2154

ポイント50pt

ぼくなら、script の onload を使います。

var head = document.getElementsByTagName("head");
var script = document.createElement("script");
script.setAttribute("src","http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js");
script.setAttribute("type","text/javascript");

// ★これ
script.addEventListener("load", function() {
    $(function(){
        alert('test');
    });
});

document.head.appendChild(script);
id:zcdev

回答ありがとうございます。

このやり方で解決しました。

2015/05/12 19:58:21

その他の回答1件)

id:psne No.1

回答回数605ベストアンサー獲得回数334

ポイント50pt

window.onload - Web API インターフェイス | MDN
window.onloadか
DOMContentLoaded - Event reference | MDN
DOMContentLoadedを利用してみてはいかがでしょうか。

window.addEventListener("DOMContentLoaded", function(){
	$(function(){
		alert('test');
	);

}, false);
id:a-kuma3 No.2

回答回数4973ベストアンサー獲得回数2154ここでベストアンサー

ポイント50pt

ぼくなら、script の onload を使います。

var head = document.getElementsByTagName("head");
var script = document.createElement("script");
script.setAttribute("src","http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js");
script.setAttribute("type","text/javascript");

// ★これ
script.addEventListener("load", function() {
    $(function(){
        alert('test');
    });
});

document.head.appendChild(script);
id:zcdev

回答ありがとうございます。

このやり方で解決しました。

2015/05/12 19:58:21

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません