2010-12-01 27 views
6

我已经做了一个js函数,在我的html中包含另一个javascript。我需要确保使用该函数加载的脚本已完成处理,然后仅在原始脚本中进一步移动。如何在特定的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

相关问题