I am accessing a link on my site that will provide a new image each time it is accessed.
The issue I am running into is that if I try to load the image in the background and then update the one on the page, the image doesn't change--though it is updated when I reload the page.
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);
}
Headers as FireFox sees them:
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
I need to force a refresh of just that image on the page. Any ideas?
set its own src as its src.
I solved this problem by sending the data back through a servlet.
Then from the page you just give it the servlet with some params to grab the correct image file.
I used the below concept of first binding the image with a false(buffer) url and next binding it with the valid url.
This way, I am forcing the browser to refresh with valid url.
Try adding a cachebreaker at the end of the url:
This will append the current timestamp automatically when you are creating the image, and it will make the browser look again for the image instead of retrieving the one in the cache.
I had a requirement: 1) can't add any
?var=xx
to the image 2) it should work cross-domainI really like the #4 option in this answer with one but:
My quick and dirty way is:
iframe.contentWindow.location.reload(true);
Here it is
Yeah, I know, setTimeout... You have to change that to proper onload-events.
Then below in some javascript
And so what this does is, when the image loads, schedules it to be reloaded in 1 second. I'm using this on a page with home security cameras of varying type.