我正在显示一些缩略图,这些缩略图会定期由服务器上的外部进程重新生成。我想在页面加载时在当前缺少的那些上显示一个微调器(gif),并在它们最终到达时用它们的缩略图替换微调器。显示微调器是微不足道的。缩略图文件名都是预先知道的。我还没有找到一种方法来观察它们是否出现在 Javascript 中。
可能需要几分钟才能创建一些缩略图。创建它们的过程会在执行新处理之前删除它们,从而产生新的缩略图。这些外部处理事件之间的间隔可以是几小时。
谁能想到一种方法来做到这一点?(没有 Ajax 或 Jquery - 只是基本的 Javascript)。
谢谢。
编辑- 我确信这可以改进,但它似乎工作。感谢您的提示和建议。它给了我我正在寻找的想法。有能力这样做的人可能希望删除顶部关于此问题已通过链接回答的注释 - 该问题不相关。--JKC
var intervalId, thumbs;
function refresh_thumbs() {
// Refresh whether they need it or not. If the thumb isn't there,
// onerror will (re)load the spinner.
for (i=0; i<thumbs.length; i++) {
id = "snap_"+i;
document.getElementById(id).src = thumbs[i];
}
}
function init(thumbstring) {
// Split comma-separated string into an array of thumbnail links
thumbs=thumbstring.split(",");
refresh_thumbs();
intervalId = window.setInterval( refresh_thumbs, 5000); // milliseconds
}
例如,可能会生成一个包含以下内容的页面:
<img src='/d/thumb_0.png' id='snap_0' onerror='this.src="/s/spinner.gif";'>
<img src='/d/thumb_1.png' id='snap_1' onerror='this.src="/s/spinner.gif";'>
<script>
init("/d/thumb_0.png,/d/thumb_1.png");
</script>
refresh_thumbs
之前调用setInterval
是必要的,以防止必须等待 5 秒钟才能看到开始的拇指。
我怀疑出于任何原因我不需要保存的 intervalId。