Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaScript中的特定行上动态加载文件?_Javascript_Jquery_Ajax_Dynamic_Modernizr - Fatal编程技术网

如何在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。如果您有多个依赖项,只需在加载每个依赖项后增加一个计数器,并在计数达到某个所需值时触发依赖项代码。