2010-12-01 10 views
6

私は自分のhtmlに別のjavascriptを組み込むためのjs関数を作っています。関数を使用して読み込んだスクリプトが処理を完了してから、元のスクリプトでさらに移動することを確認する必要があります。特定のJSがロードされた後にjavascript関数を実行するには?

function loadBackupScript(){ 
    var script = document.createElement('script'); 
    script.src = 'http://www.geoplugin.net/javascript.gp'; 
    script.type = 'text/javascript'; 
    var head = document.getElementsByTagName("head")[0]; 
    head.appendChild(script); 
} 

スクリプトがその機能を先に使用するために読み込まれていることを知る必要があります。それ、どうやったら出来るの?

答えて

8
function loadBackupScript(callback) { 
    var script; 
    if (typeof callback !== 'function') { 
     throw new Error('Not a valid callback'); 
    } 
    script = document.createElement('script'); 
    script.onload = callback; 
    script.src = 'http://www.geoplugin.net/javascript.gp'; 
    document.head.appendChild(script); 
} 

loadBackupScript(function() { alert('loaded'); }); 
2

は、あなたの関数にこれを追加します。

// all cool browsers 
script.onload = doSomething; 
// IE 6 & 7 
script.onreadystatechange = function() { 
if (this.readyState == 'complete') { 
    doSomething(); 
} 

あなたはまた、機能の存在を確認するためのsetTimeout()を使用することができ、これらのイベントを信用していない場合。この上 良い記事はここで見つけることができます:

http://www.ejeliot.com/blog/109

1

私はこのためLABJsを使用することをお勧めします。もしこの

を行うことができます
$LAB 
.script("framework.js") 
.wait(function(){ 
    //called when framework.js is loaded 
}) 
.script("init.js") 
.wait(function(){ 
    //called when init.js is loaded 
}); 

それを使用して

これは、クロスブラウザであり、しばしばそれが並列ダウンロードをサポートする方法に起因するあなたのHTMLにスクリプトタグをハードコーディングするよりも効率的になります。

これについてさらに読むことができますhere

関連する問題