首页 > 解决方案 > 无需硬刷新的 Gif 重置缓存

问题描述

我需要在多个选项卡部分放置单独的 gif。因为我单击显示每个 gif 和另一个选项卡的选项卡,所以我需要 Javascript 来重置事件处理程序上的 gif。本节的脚本运行良好。我写了一个 resetGif 函数来对应这个。这在大多数情况下也有效。我发现这个特定脚本的问题是重置在某个时候被缓存。如果我在浏览器中执行硬刷新,resetGif 脚本会正确执行。如果我执行定期刷新,resetGif 脚本只运行一次。

我对 Javascript 没有过多的经验,所以我不确定接下来要尝试什么。

// Function resets gif through id

function resetGif(id) {
    var img = document.getElementById(id);
    var imageUrl = img.src;
    img.src = "";
    img.src = imageUrl;
}

无论我是硬刷新还是正常刷新,我都需要 resetGif 函数在每次调用它时运行/重置 gif。我需要它不缓存。

标签: javascriptjquery

解决方案


如果要强制重新加载图像,请将时间戳附加到src唯一的,如下所示:

function resetGif(id) {
  var img = document.getElementById(id);
  var imageUrl = img.src;
  img.src = '';
  img.src = imageUrl.split('?')[0] + '?' + new Date().getTime();
}

请注意,理论上,src = ''应该不需要 line 设置,除非有一些我不知道的奇怪浏览器行为。


推荐阅读