2008年12月11日木曜日

JSONPの遅延ロード

このエントリーをはてなブックマークに追加
JSONPで遅延ロードするコードをごりごり書いた。
かなり嘘コードなので、信じちゃ駄目。
イメージとしては、WebAPIのJSONP経由で自前のCallBack関数で処理してた人は参考になるかも。
意味不明な日本語だねぇ(笑)
肝になるのは、callback1.flgとcallback2.flgを処理が終わった後でtrueにしているところ。
これを設定する事で、initの中のwait関数が動くわけ。
もっとシンプルに書ける方法があるかもしれないので、知っている人はコメント欄なりトラバなりで教えてください。よろしくお願いしますm(_ _)m


//遅延ロードsample

//ma.la 's wait function
//http://la.ma.la/blog/diary_200702210356.htm
function wait(a,func){
var check = 0;
try{
eval("check = " + "(" + a + ")" );
}catch(e){
}
if(check){
func()
}else{
var f = function(){wait(a,func)};
setTimeout(f,100);
}
}

function init(){
parseScript('http://hogehoge.hoge/hoge1.js');
parseScript('http://hogehoge.hoge/hoge2.js');
wait( 'callback1.flg' , function(){
wait( 'callback2.flg', function(){
alert('finish'); }); });
}

function callback1(){
//処理
alert('hoge1');
callback1.flg = true;
}


function callback2(){
//処理
alert('hoge2');
callback2.flg = true;
}

function parseScript( response ){
var s = document.createElement('script');
s.type = 'text/javascript';
s.src = response;
s.charset = 'utf-8';
var h =document.getElementsByTagName('head')[0].appendChild(s);
}

0 件のコメント :

コメントを投稿