如何确保定义 img.onload 函数的脚本在 img 之前加载?
How can I ensure that the script defining an img.onload function loads before the img?
假设我的 HTML 按显示的顺序包含这两个标签:
<script src="script.js"></script>
<img src="http://otherdomain.com/image.png" onload="imgLoad(this)"/>
和script.js
定义函数imgLoad
。我知道当浏览器解析 HTML 时,它会首先看到脚本并因此首先请求它,但是如果这需要很长时间并且图像在脚本之前完成加载,我会得到一个错误 imgLoad
未定义。
或者这实际上不可能吗?规范是否要求 onload 事件和 javascript 的 运行 按照元素声明的顺序同步发生?如果是这样,现代浏览器是否正确实现了这一点?
这是关于这个主题的great article。
TL;DR
无法在脚本之前加载图像,因为脚本加载是同步的。这是为浏览器创建加载功能的最简单方法,因此是所有现代浏览器的默认功能。
假设我的 HTML 按显示的顺序包含这两个标签:
<script src="script.js"></script>
<img src="http://otherdomain.com/image.png" onload="imgLoad(this)"/>
和script.js
定义函数imgLoad
。我知道当浏览器解析 HTML 时,它会首先看到脚本并因此首先请求它,但是如果这需要很长时间并且图像在脚本之前完成加载,我会得到一个错误 imgLoad
未定义。
或者这实际上不可能吗?规范是否要求 onload 事件和 javascript 的 运行 按照元素声明的顺序同步发生?如果是这样,现代浏览器是否正确实现了这一点?
这是关于这个主题的great article。
TL;DR
无法在脚本之前加载图像,因为脚本加载是同步的。这是为浏览器创建加载功能的最简单方法,因此是所有现代浏览器的默认功能。