人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

以下のように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()を使い遅らせる事で実行は成功しますが、それ以外で実行できる方法があれば教えて頂きたいです。
宜しくお願い致します。

●質問者: zcdev
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● ぽけっとしすてむ
●50ポイント

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

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

}, false);

2 ● a-kuma3
●50ポイント ベストアンサー

ぼくなら、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);

zcdevさんのコメント
回答ありがとうございます。 このやり方で解決しました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ