2013-02-04 40 views
0

我创造了这个脚本,针对一core.js文件为我的客户的网站,我想从core.js文件动态加载一些JavaScript库。但是,javascript库要求您首先加载该库,然后使用脚本的其余部分,因为在调用它之前必须定义库对象,doh。所以我有一个非常简单的脚本动态加载一个文件,但我想知道,如果有,以确保它加载它在优先提前core.js文件的方法。下面是当前的脚本:如何在JavaScript中的特定行上动态加载文件?

(function() { 
    var script = document.createElement("script"); 
    script.setAttribute("type", "text/javascript"); 
    script.setAttribute("src", "http://modernizr.com/downloads/modernizr-latest.js"); 
    if(typeof script != "undefined") { 
     document.getElementsByTagName("head")[0].appendChild(script); 
    } 
})(); 

并在调试器,你会看到:

当然,它会提前核心文件的加载动态文件,但我不知道是否有一种方法可以指定要加载modernizr文件的文档上的行?否则,即使我已经加载它,我也无法使用Modernizr。

很明显,我不能使用jQuery,因为我想要加载这一点。

+0

交换这两行的工作?换句话说,在加载模糊的外线之前加载modernizr? – robbrit

+0

的appendChild附加脚本到头部的底部,只需要运行在正确的顺序的功能,并以正确的顺序追加脚本,或者使用预先准备预先设置的脚本来代替。 – adeneo

+0

@robbrit好了,模糊了JavaScript文件(这是根据要求这样做),是实际加载Modernizr的文件的JavaScript,所以我不能只是交换出来。和adeneo,你是说我可以像现在一样使用我的方法来使用Modernizr和jQuery吗?在同一个文件中?因为根据我的经验,你必须加载这些*首先*,然后使用它。 – ModernDesigner

回答

1

您可以使用load事件侦听器响应加载的动态加载的JavaScript资源(或任何资源,图像,iframe,视频等)。在这里最简单的方法是:

(function() { 
    var script = document.createElement("script"); 
    ... 
    script.onload = function() { 
     // this will run later, when the script loads 
     // in this function you can safely use Modernizr 
    } 
})(); 
+0

很酷。再次感谢! – ModernDesigner

相关问题