Javascript 确切地说,什么时候会发生onLoad

Javascript 确切地说,什么时候会发生onLoad,javascript,firefox,onload,Javascript,Firefox,Onload,我特别关注DOM中选定元素的onload事件。出于示例的目的,假设我的DOM中有一个图像 正如我所理解的,当图像被绘制到屏幕上时,这个图像的onload事件应该会触发,但最近我收到了一些数据,建议不要这样做。因此,我的问题如下: 按以下事件的顺序,图像的onload事件何时触发 检查包含图像的HTML 对图像进行了请求 接收图像的第一个字节 接收到最后一个字节 浏览器检查HTTP响应的标头 图像被绘制到屏幕上 我特别关注Firefox,但我也会对它如何影响Internet Explorer(特别

我特别关注DOM中选定元素的onload事件。出于示例的目的,假设我的DOM中有一个图像

正如我所理解的,当图像被绘制到屏幕上时,这个图像的onload事件应该会触发,但最近我收到了一些数据,建议不要这样做。因此,我的问题如下:

按以下事件的顺序,图像的onload事件何时触发

  • 检查包含图像的HTML
  • 对图像进行了请求
  • 接收图像的第一个字节
  • 接收到最后一个字节
  • 浏览器检查HTTP响应的标头
  • 图像被绘制到屏幕上
  • 我特别关注Firefox,但我也会对它如何影响Internet Explorer(特别是IE8)和Chrome感兴趣

    而JavaScript提供了负载 事件,用于在创建页面时执行代码 渲染时,此事件不会获取 触发,直到所有资产,如 图像已全部收到


    因此,为了回答您的问题,我想说在您列出的所有事件之后。

    加载事件发生在屏幕上绘制图像之后

    演示:


    (警报会阻止浏览器线程,因此如果图像尚未绘制,则在警报仍处于打开状态时,您将无法看到它。)

    我会说除了6以外的所有内容。当然,你的事件顺序是错误的;标题位于数据之前。

    不确定为什么会否决此选项。我知道这个问题并没有问jQuery,但我列出的引文是关于JavaScript的,而不是jQuery。当他们谈论与JavaScript相关的事情时,我通常信任jQuery。我忍者在没有完全阅读它的情况下投了反对票。现在我不那么心烦意乱,并且已经完全阅读了,我已经修改了否决票(由于我的投票被锁定,我不得不编辑你的答案并添加一个逗号)。(我道歉!)谢谢你纠正它,斯蒂芬@Sime我想你可能是对的:)@Stephen投票和编辑没有关系。您应该能够收回您的投票,而不必编辑答案。@Šime实际上它们是相关的。经过一段时间(我想是5分钟),你的投票被锁定,除非答案被编辑,否则无法更改。尝试一下,转到今天早些时候投票的内容,并尝试删除投票。因此,如果这两个线程是并行运行的(我相信IE专门处理渲染的并行执行),那么您的示例就没有说服力了。因此,我所做的是装配一个屏幕截图(带有时间戳),记录各种组件的onload事件,并将时间戳与图像进行比较。现在我可能犯了一个错误,但它似乎表明一些图像在被绘制到屏幕之前被触发了加载。@tzenes IE有用于绘制和脚本的并行线程?我对此表示怀疑。@tzenes我已经在FF4、Ch9、O11和S5中测试了我的演示,在所有这些浏览器中,警报都会弹出。图像出现在屏幕上1/2秒后。k,那么错误很可能是我自己造成的。我将返回并重新检查我的代码。谢谢。取决于你考虑的第一个字节。您可以考虑第一个字节来对第一个HTTP字节进行打赌,在这种情况下,在头文件之前得到第一个字节。第一个字节的时间戳也可能是最后一个字节,在这种情况下,这两个字节都出现在检查头之前。这些事件的顺序是不确定的-deterministic@tzenes好的,他说的是图像的第一个字节,而不是http响应,但是在检查报头(假设它们适合一个数据包…)之前,关于接收第一个数据包的要点是什么