在执行javascript代码之前,是否可以等待所有javascript文件加载完毕?

在执行javascript代码之前,是否可以等待所有javascript文件加载完毕?,javascript,jquery,Javascript,Jquery,我们在母版页底部加载了几个JavaScript文件。但是,在加载其他脚本之前,我需要执行一些JavaScript。是否可以等到所有JavaScript文件加载后再执行一些JavaScript代码 我以为$(document).ready()做到了这一点,但事实证明并非如此。当然,我们可以将脚本文件从底部移动到顶部,但我想知道这是否可能是我想要的。您可以使用的延迟属性。它指定当页面完成解析时将执行脚本 <script defer src="path/to/yourscript.js

我们在母版页底部加载了几个JavaScript文件。但是,在加载其他脚本之前,我需要执行一些JavaScript。是否可以等到所有JavaScript文件加载后再执行一些JavaScript代码

我以为
$(document).ready()
做到了这一点,但事实证明并非如此。当然,我们可以将脚本文件从底部移动到顶部,但我想知道这是否可能是我想要的。

您可以使用
延迟属性。它指定当页面完成解析时将执行脚本

<script defer src="path/to/yourscript.js">

这是一篇很好的文章:

浏览器支持似乎相当不错:

另一篇关于使用延迟和异步加载JS的精彩文章:

您可以使用

$(window).on('load', function() {
    // your code here
});
它将等待页面加载
$(document).ready()
等待DOM加载

在普通JS中:

window.addEventListener('load', function() {
    // your code here
})
加载代码后,您可以使用并运行代码:

 $.getScript("my_lovely_script.js", function(){

    alert("Script loaded and executed.");
    // here you can use anything you defined in the loaded script

 });

您可以在这里看到更好的解释:

对@Eruant的答案进行了一些扩展

$(window).on('load', function() {
    // your code here
});
加载脚本时,可以很好地处理
async
defer

因此,您可以像这样导入所有脚本:

<script src="/js/script1.js" async defer></script>
<script src="/js/script2.js" async defer></script>
<script src="/js/script3.js" async defer></script>

只需确保
script1
不会在
$(窗口)之前调用
script3
中的函数。在('load'…
)上,确保在
窗口加载事件中调用它们

有关异步/延迟的更多信息。

这对我来说很有用:

var jsScripts = [];

jsScripts.push("/js/script1.js" );
jsScripts.push("/js/script2.js" );
jsScripts.push("/js/script3.js" );

$(jsScripts).each(function( index, value ) {
    $.holdReady( true );
    $.getScript( value ).done(function(script, status) {
        console.log('Loaded ' + index + ' : ' + value + ' (' + status + ')');                
        $.holdReady( false );
    });
});

你可以使用
脚本
加载器在你完成自己的脚本后执行。我不认为你想要什么——你同时说,你想在其他脚本加载之前执行X,但也想等到所有脚本加载。这是什么?你想执行的X的性质是什么?@Damien\u the\n信徒TGo更清楚:我希望在加载所有javascript文件后执行javascript。以下是一个更好的解释,适用于我的应用程序,它需要等到动态加载的脚本加载完成后才能生成页面内容。+1简单的旧javascript等价物是:
window.addEventListener('load',function(){/*此处的代码*/})
。这是附加执行堆栈还是替换旧的执行堆栈?如果我想要标准javascript函数,而不是jquery。代码如何?请注意,这不会缓存文件,它会每次下载它。文档引用$.ajaxSetup或$.ajax来启用缓存。它似乎不会等待所有其他JS文件在l时执行east不在Firefox中。正如文档所说,在解析页面时延迟脚本加载(而不是加载js/css)。这不是一个解决方案。