gpt4 book ai didi

javascript - 即使在更改源后也会暂时显示旧图像

转载 作者:行者123 更新时间:2023-11-30 11:20:46 24 4
gpt4 key购买 nike

我们需要从右向左完全移动一个 div(在 div 标签内有背景图片和 img),一旦 div 完全消失,我们需要再次从右开始移动 div,但在 div 内有不同的图像。

一旦 div 完全消失,我们将 div 中的图像源更改为新图像。但是在新图像显示在 div 上之前,旧图像会暂时显示。

下面是源代码。

<!DOCTYPE html>
<html>
<head>
<style>
html, body {
background-image: url("background/moon_bg.png");
background-repeat: no-repeat;
background-size: cover;
position: relative;
height: 100%;
width: 100%;
margin: 0px;
}

#board {
position: absolute;
background-repeat: no-repeat;
z-index: 99999;
}
</style>
</head>
<body>
<div id="board">
<img id="poster" src="//:0">
</div>

<script>
var board = document.getElementById('board');
var poster = document.getElementById('poster');

var poster_images = ['IronMan.png',
'gladiator.png',
'Ghostbusters.png'];

let bd_image_path = 'url(billboard/b.png)';
let posterIndex = 0;
let newPoster = true;
let posterPath = 'posters/' + poster_images[posterIndex];;

function moveLeft()
{
if(newPoster === true) {
if(poster.complete === true) {
poster.style.left = '10px';
poster.style.top = '65px';
poster.style.width = '422px';
poster.style.height = '198px';
poster.style.position = 'absolute';

board.style.width = "441px";
board.style.height = "395px";
board.style.left = (window.innerWidth - 441) + "px";
board.style.top = (window.innerHeight - 415) + "px";
board.style.backgroundImage = bd_image_path;

poster.style.display = 'block';
newPoster = false;
}
else {
console.log('in else');
}
}
else {
board.style.left = board.style.left || 0;

if(parseInt(board.style.left) <= -(parseInt(board.style.width))) {
newPoster = true;
posterIndex ++;
if(posterIndex >= poster_images.length) {
posterIndex = 0;
}
posterPath = 'posters/' + poster_images[posterIndex];
poster.style.display = 'none';
}
else {
board.style.left = parseInt(board.style.left) - 2 + 'px';

poster.style.left = '10px'
poster.style.top = '65px';
poster.style.width = '422px';
poster.style.height = '198px';
poster.style.position = 'absolute';
poster.src = posterPath;
}
}
requestAnimationFrame(moveLeft);
}

moveLeft();
</script>
</body>
</html>

谁能帮我解决这个问题。

最佳答案

我相信这归结为缓存问题,您可以通过添加标识符来告诉浏览器它是一个新图像来解决这个问题,时间通常是最简单的方法。

poster.src = posterPath + '?' + new Date().getTime();

关于javascript - 即使在更改源后也会暂时显示旧图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49933360/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com