2010-12-01 3 views
6

Benim htmlimde başka bir javascript eklemek için js işlevi yaptım. Fonksiyonu kullanarak yüklediğim betiğin işlemin tamamlandığını ve daha sonra sadece orijinal senaryoda daha ileri gitmesini sağlamalıyım.Belirli bir JS yüklendikten sonra javascript işlevi nasıl çalıştırılır?

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); 
} 

Senaryonun ötesinde işlevleri kullanmaya yükledi olduğunu bilmek gerekir. Bunu nasıl yaparım?

cevap

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

sizin işlevine ekleyin:

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

sen de setTimeout kullanabilirsiniz bu olayları güvenmiyorum IF() fonksiyonunun varlığını denetlemek için. Bu konuda İyi makale burada bulunabilir:

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

1

Bunun için LABJs kullanarak öneriyoruz.

paralel indirmeleri destekler bu

$LAB 
.script("framework.js") 
.wait(function(){ 
    //called when framework.js is loaded 
}) 
.script("init.js") 
.wait(function(){ 
    //called when init.js is loaded 
}); 

Bu çapraz tarayıcı ve sık sık html içine komut dosyası etiketleri kodlamak yerine daha verimli olacak biçimde nedeniyle yapabileceğiniz bunu kullanma.

Bu hakkında daha fazla bilgi alabilirsiniz here