スクリプトからscriptタグを生成してロードされるまで待つ

IEでdefer属性が必要なのを知らなかったのでメモ。
Firefox 2と IE6(XP SP2) ,Opera 9.21で確認。

test.html

<html>
 <script src="A.js"></script>
 <body onload="A.test()">test</body>
</html>

A.js

var A = {
    log:function(str){
        var div = document.createElement("DIV");
        div.innerHTML=str;
        document.body.appendChild(div);
    }
    ,test:function(){
        A.log("A.test called");
        B={bLoad:false};
        var script = document.createElement("script");
        script.defer = "defer";
        script.src= "B.js";
        document.body.appendChild(script);
        A.timerID = setInterval(&#39;A.checkScriptLoad("B.bLoad","B.test()")&#39;,1000);
    }
    ,checkScriptLoad:function(check_v,load_v){
        var r = eval(check_v);
        if( r !== true ){
            A.log("waiting script load.. "+r);
        }else{
            clearInterval(A.timerID);
            eval(load_v);
        }
    }
}

B.js

var B={
    bLoad:true
    ,test:function(){
        A.log("B.test called");
    }
};
A.log("B is loaded");