我正在访问我网站上的一个链接,每次访问该链接时都会提供一个新的图像.

我遇到的问题是,如果我try 在后台加载图像,然后更新页面上的图像,图像不会改变——尽管在重新加载页面时图像会更新.

var newImage = new Image();
newImage.src = "http://localhost/image.jpg";

function updateImage()
{
if(newImage.complete) {
    document.getElementById("theText").src = newImage.src;
    newImage = new Image();
    number++;
    newImage.src = "http://localhost/image/id/image.jpg?time=" + new Date();
}

    setTimeout(updateImage, 1000);
}

FireFox看到的标题:

HTTP/1.x 200 OK
Cache-Control: no-cache, must-revalidate
Pragma: no-cache
Transfer-Encoding: chunked
Content-Type: image/jpeg
Expires: Fri, 30 Oct 1998 14:19:41 GMT
Server: Microsoft-HTTPAPI/1.0
Date: Thu, 02 Jul 2009 23:06:04 GMT

我需要强制刷新页面上的该图像.有什么主意吗?

推荐答案

我最终做的是让服务器将该目录下的任何图像请求映射到我试图更新的源.然后,我让计时器在名称的末尾附加一个数字,以便DOM将其视为新图像并加载.

例如.

http://localhost/image.jpg
//and
http://localhost/image01.jpg

将请求相同的图像生成代码,但在浏览器中看起来像不同的图像.

var newImage = new Image();
newImage.src = "http://localhost/image.jpg";
var count = 0;
function updateImage()
{
    if(newImage.complete) {
        document.getElementById("theText").src = newImage.src;
        newImage = new Image();
        newImage.src = "http://localhost/image/id/image" + count++ + ".jpg";
    }
    setTimeout(updateImage, 1000);
}

Javascript相关问答推荐

检测内部/部分组件内部的路由更改(Nuxt 2.14中的VueRoute 3)

为什么新的Promises会在不需要的情况下被用来等待?

除了在Angular 16中使用快照之外,什么是可行且更灵活的替代方案?

如何使用React渲染器放置根dis?

如何编辑代码FlipDown.js倒计时?

为什么我达到了时间限制!?LeetCode链接列表循环(已解决,但需要解释!)

无法将nPM simplex-noise包导入在JS项目中工作

Vega中的模运算符

materialized - activeIndex返回-1

使用axios.获取实时服务器时的404响应

Google Apps脚本中的discord邀请API响应的日期解析问题

我不知道为什么setwritten包装promise 不能像我预期的那样工作

如何使覆盖div与可水平滚动的父div相关?

如何通过使用vanilla JS限制字体大小增加或减少两次来改变字体大小

在HTML语言中调用外部JavaScript文件中的函数

从Nextjs中的 Select 项收集值,但当单击以处理时,未发生任何情况

按下单键和多值

是否可以将Select()和Sample()与Mongoose结合使用?

对具有相似属性的对象数组进行分组,并使用串连的值获得结果

将多个文本框中的输出合并到一个文本框中