如果我使用 javascript 预加载图像,当我在 <img> 标签中使用它时会加载它吗?
If I preload an image using javascript will it then be loaded when I use it in a <img> tag?
我遇到小图片加载速度非常慢的问题,所以我想我应该尝试将它预加载到浏览器缓存中。我查了一下,发现有很多方法可以异步预加载图像,但有两件事还不清楚。
假设我有一组图像文件名(假设每个元素都是正确的完整路径)
const images = ['img1.png','img2.png','img3.png']
我使用从 Preloading Images with JavaScript
中学到的知识预加载图像
function preLoad(){
images.forEach(img => {
const myImage = new Image()
myImage.onload = (img) => myImage.src = img
})
}
preload()
请注意,我没有将任何图像对象存储在变量或数组中。
该过程完成后,图像是否已缓存并仅通过引用文件名就可以使用?例如,如果我尝试
document.getElementById('image-container').innerHTML = `<img src="${images[0]}" alt="${images[0]}>`
它会立即显示图像吗?由于此方法不使用任何异步方法(回调、承诺、async/await),我如何知道该过程已完成并且图像已准备好使用?
我曾经遇到过类似的问题并已发布 。
我用了<link rel="preload" as="image" href="cards/PNG/2C.png">
来实现预加载
我想您的 JavaScript 功能也是如此。如果是这样,浏览器会在显示页面之前加载所有图像,因此它可以不间断地显示图像。
为了能够检查这是否真的发生了什么,请“检查”您的页面,在源选项卡中,您应该能够看到浏览器加载的所有文件,包括您的图像,并且它使用与以下文件相同的文件层次结构你在你的代码中做了。
我遇到小图片加载速度非常慢的问题,所以我想我应该尝试将它预加载到浏览器缓存中。我查了一下,发现有很多方法可以异步预加载图像,但有两件事还不清楚。 假设我有一组图像文件名(假设每个元素都是正确的完整路径)
const images = ['img1.png','img2.png','img3.png']
我使用从 Preloading Images with JavaScript
中学到的知识预加载图像function preLoad(){
images.forEach(img => {
const myImage = new Image()
myImage.onload = (img) => myImage.src = img
})
}
preload()
请注意,我没有将任何图像对象存储在变量或数组中。 该过程完成后,图像是否已缓存并仅通过引用文件名就可以使用?例如,如果我尝试
document.getElementById('image-container').innerHTML = `<img src="${images[0]}" alt="${images[0]}>`
它会立即显示图像吗?由于此方法不使用任何异步方法(回调、承诺、async/await),我如何知道该过程已完成并且图像已准备好使用?
我曾经遇到过类似的问题并已发布 <link rel="preload" as="image" href="cards/PNG/2C.png">
来实现预加载
我想您的 JavaScript 功能也是如此。如果是这样,浏览器会在显示页面之前加载所有图像,因此它可以不间断地显示图像。
为了能够检查这是否真的发生了什么,请“检查”您的页面,在源选项卡中,您应该能够看到浏览器加载的所有文件,包括您的图像,并且它使用与以下文件相同的文件层次结构你在你的代码中做了。