假设我的 HTML 代码中有一个图像,并且只要图像正在加载,我就想显示一个微调器。我可以通过在 JavaScript 中加载图像并在加载后隐藏微调器来做到这一点,例如:
async loadImage(src) {
return new Promise((resolve, reject) => {
let img = new Image()
img.onload = () => resolve(img)
img.onerror = reject
img.src = src
}).catch()
}
let image = document.getElementById('#image1')
loadImage(image.src).then(() => {
// Image loaded, spinner can be hidden.
})
现在我正在尝试对 HTMLpicture
元素做同样的事情。假设我有以下 HTML 代码:
<picture>
<source srcset="image2.webp" type="image/webp" />
<source srcset="image2.jpg" type="image/jpg" />
<img src="image2.jpg" />
</picture>
使用上面的 JavaScript 代码,它将加载img
标记的来源,即 JPG 版本。然而,浏览器甚至可能不会选择加载 JPG 版本,而是加载 WebP 版本。我知道图像的currentSrc
属性,但是只有在加载图像后,此属性才会应用于图像。
基本上我需要在完全加载之前知道浏览器正在加载哪个图像。有谁知道如何实现这一目标?