Javascript 是否保证在窗口onload事件之前执行外部异步/延迟Java脚本?

Javascript 是否保证在窗口onload事件之前执行外部异步/延迟Java脚本?,javascript,html,asynchronous,onload,deferred-execution,Javascript,Html,Asynchronous,Onload,Deferred Execution,据我所知,异步脚本是在文档解析完成之前执行的,然后延迟脚本。但是它们与window.onload事件的关系呢 如果我理解正确,异步脚本保证在窗口onload之前运行,然后延迟执行。是这样吗?或者这两种脚本是否总是在窗口加载之前执行?对load事件作了如下说明: 加载事件在文档加载过程结束时激发。此时,文档中的所有对象都在DOM中,所有图像、脚本、链接和子帧都已完成加载 异步脚本一下载就加载,延迟的脚本在解析HTML后加载。在加载它们之后,load事件触发。因此,是的,规范中保证了这一点。是的,异

据我所知,异步脚本是在文档解析完成之前执行的,然后延迟脚本。但是它们与window.onload事件的关系呢

如果我理解正确,异步脚本保证在窗口onload之前运行,然后延迟执行。是这样吗?或者这两种脚本是否总是在窗口加载之前执行?

load
事件作了如下说明:

加载事件在文档加载过程结束时激发。此时,文档中的所有对象都在DOM中,所有图像、脚本、链接和子帧都已完成加载


异步脚本一下载就加载,延迟的脚本在解析HTML后加载。在加载它们之后,
load
事件触发。因此,是的,规范中保证了这一点。

是的,
异步
延迟
脚本在窗口的
加载
事件之前运行

我只想指出,事件名为
load
,而不是
onload
<代码>窗口。onload是为此事件附加事件处理程序的一种方法

我还建议将
load
事件附加到
script
元素本身,而不是在
窗口
对象上:

<script>
  var script = document.createElement("script");
  script.addEventListener("load", function(event) {
    console.log("Script finished loading and executing");
  });
  script.src = "http://example.com/example.js";
  script.async = true;
  document.getElementsByTagName("script")[0].parentNode.appendChild(script);
</script>

var script=document.createElement(“脚本”);
script.addEventListener(“加载”),函数(事件){
log(“脚本已完成加载和执行”);
});
script.src=”http://example.com/example.js";
script.async=true;
document.getElementsByTagName(“脚本”)[0].parentNode.appendChild(脚本);

我不是100%确定,但从上下文来看,
async
脚本只是在异步队列中排队,并在引擎从那里拾取脚本后立即执行。我不确定是否与
窗口.onload
事件有任何关系。是的,我的问题是“have finished load”部分。在我看来,下载和执行脚本是有区别的,我不确定完成加载意味着这两者,或者完成加载也可能意味着脚本已下载,但可能未执行。但你可能是对的,加载意味着这两个方面。我想知道“加载”脚本是否有确切的定义,或者它只是暗示它也意味着执行。我做了一些实验,似乎窗口对象的
load
事件等待加载和执行脚本,即使它们是动态添加的。谢谢,我不知道脚本上的
load
事件。该片段甚至被用作
load
事件的示例。但根据“动态插入的脚本(使用document.createElement)默认异步加载”。所以听起来设置
script.async=true
什么都不做。为了清晰起见,最好保留它。