外部のJavaScriptを読み込んだ後でそれに依存した関数を実行するjQuery plugin
jQueryに標準で入っているjQuery.getScript関数で良い。
Ajaxianの記事でこんなのを見つけてインスパイアされてつくった。
やっつけなのでFirefox3でしか動作確認してない。
pluginのコード
(function($){ $.extend($,{ includeAndRun:function(scriptUrl,callback){ var s = $('<script/>') .attr({ src:scriptUrl, language:'javascript', type:'text/javascript' }) .bind('load',function(e){ $(this).remove(); callback(); }) .get(0); $('head').get(0).appendChild(s); } }); })(jQuery);
せつめー
とりあえずscript要素のloadイベントにお掃除とcallback関数の実行を突っ込んでみた。
Firefox3でやったらreadystatechangeは拾えなかったんからloadイベントだけ使ったんだけど、これはなんなんだぜ?
$('').attr〜中略〜.appendTo('head')みたいに
jQueryでscript要素をappendするとロード後に消されるのでDOM要素を取り出してやった。
使い方
$.includeAndRun('http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js',function(){firebug.init();});
第一引数に読み込むJavaScriptのURL、第二引数にcallback関数を渡す。
これだとFirebug LiteのJavaScriptをロードした後に初期化メソッドを実行してconsoleを開いてくれる。