如何在JavaScript中的特定行上动态加载文件?
我为客户网站的如何在JavaScript中的特定行上动态加载文件?,javascript,jquery,ajax,dynamic,modernizr,Javascript,Jquery,Ajax,Dynamic,Modernizr,我为客户网站的core.js文件创建了这个脚本,我想从core.js文件中动态加载一些javascript库。但是,javascript库要求您首先加载该库,然后使用脚本的其余部分,因为您必须在调用库对象doh之前定义库对象。所以我有一个非常简单的脚本来动态加载一个文件,但是我想知道是否有一种方法可以确保它在core.js文件之前优先加载它。以下是当前脚本: (function() { var script = document.createElement("script");
core.js
文件创建了这个脚本,我想从core.js
文件中动态加载一些javascript库。但是,javascript库要求您首先加载该库,然后使用脚本的其余部分,因为您必须在调用库对象doh之前定义库对象。所以我有一个非常简单的脚本来动态加载一个文件,但是我想知道是否有一种方法可以确保它在core.js
文件之前优先加载它。以下是当前脚本:
(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 );
}
})();
在调试器中,您可以看到:
当然,它将在核心文件之前加载动态文件,但我想知道是否有办法指定文档上要加载modernizer
文件的行?否则,我不能使用Modernizer,即使我已经加载了它
显然,我不能使用jQuery,因为我也想加载它。您可以使用
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
}
})();
交换这两行行行行吗?换句话说,在加载模糊的输出行之前加载Modernizer?appendChild将脚本附加到头部的底部,只需按正确的顺序运行函数,它就会按正确的顺序附加脚本,或者使用prepend来代替脚本的预加。@robbrit Well,模糊的javascript文件(根据请求执行),是实际加载Modernizer文件的javascript,所以我不能直接将它们替换掉。还有adeneo,你是说我可以像现在这样使用Modernizer和jQuery吗?在同一个文件中?因为根据我的经验,你必须先加载它们,然后再使用它。有什么原因不能使用
load
事件监听器(比如script.onload
或script.addEventListener(“load”,…)
)并在该事件监听器函数中运行依赖于库的代码吗?@modendesigner。如果您有多个依赖项,只需在加载每个依赖项后增加一个计数器,并在计数达到某个所需值时触发依赖项代码。