【发布时间】:2019-12-06 11:24:10
【问题描述】:
我正在尝试从远程服务器加载图像并将其显示在页面上的多个位置。我首先使用 fetch 创建一个新图像,然后将 blob 转换为图像 src。但是,似乎只显示了图像的第一次使用。
我在这里遗漏了什么明显的东西吗?
如何让下面的代码显示每张图片两次,而不是只显示一次?
let url1 = "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3f/Wales_versus_New_Zealand_scrum_1905_-_cropped.jpg/800px-Wales_versus_New_Zealand_scrum_1905_-_cropped.jpg"
let url2 = "https://upload.wikimedia.org/wikipedia/commons/thumb/4/46/France_versus_Wales_in_rugby_union_1922_-_cropped.jpg/800px-France_versus_Wales_in_rugby_union_1922_-_cropped.jpg"
async function getImgFromUrl(url){
let response = await fetch(url);
data = await response.blob();
let image = new Image();
image.src = URL.createObjectURL(data);
return image;
}
document.addEventListener("DOMContentLoaded", async function(){
let im1 = await getImgFromUrl(url1);
let el = document.getElementById("pic1")
el.appendChild(im1)
el = document.getElementById("pic3")
el.appendChild(im1)
let im2 = await getImgFromUrl(url2);
el = document.getElementById("pic2")
el.appendChild(im2)
el = document.getElementById("pic4")
el.appendChild(im2)
})
.grid {
display:grid;
grid-template: auto auto / auto auto;
height: 100%;
width: 100%;
grid-gap: 5px;
max-width:500px;
}
img {
max-width:250px;
}
<div class = 'grid'>
<div id = 'pic1'></div>
<div id = 'pic2'></div>
<div id = 'pic3'></div>
<div id = 'pic4'></div>
</div>
【问题讨论】:
标签: javascript image async-await fetch blob