javascript - 无需硬刷新的 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。我需要它不缓存。
解决方案
如果要强制重新加载图像,请将时间戳附加到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 设置,除非有一些我不知道的奇怪浏览器行为。
推荐阅读
- bash - 用管道卷曲:如何在没有进度表的情况下打印错误?
- android - 在 com.android.webview.chromium.WebViewContentsClientAdapter.getDefaultVideoPoste 崩溃
- swift - Swift - 在元组中搜索和替换值
- android - 如何在 Android 中更改单元测试的类字段实例
- php - 在json字符串中添加文本+ php变量的正确方法?
- javascript - 发布后更新网站上的全局变量
- angular - Angular - “给定的数据无效。”,错误:client_id “客户端 ID 必须是字符串。”
- node.js - 如何使用 Sinon 测试是否已等待(而不仅仅是创建)承诺?
- bash - 用另一个字符串遍历拆分字符串
- javascript - 使用 window.open() 函数时,媒体会在新的浏览器窗口中自动播放,而不是下载