如何在每个特定时间刷新图像? JavaScript [重复]

Posted

技术标签:

【中文标题】如何在每个特定时间刷新图像? JavaScript [重复]【英文标题】:How to refresh images each specific time ? JavaScript [duplicate] 【发布时间】:2018-01-08 12:08:54 【问题描述】:

我有一个带有

的简单 html 页面
<img src="http://www.hamqsl.com/solar101pic.php">

而且这张图片每天都会更新

如何让我的页面每天或每 12 小时更新一次此图像

我希望 javascript 更新它的原因 因为我在 HTML 小部件中使用它 哪个不会自行更新

【问题讨论】:

页面刷新也不会更新图片吗? @Max08 如果我在浏览器中刷新页面,图像会更新 @Max08 但作为一个小部件我没有点击刷新的选项 你的服务器应该设置正确的缓存头 【参考方案1】:

如this page 中所述,只需使用缓存断路器重新加载您的图像:

const img = document.getElementById("myImage")

setInterval( () => 
   img.src = "http://www.hamqsl.com/solar101pic.php?" + new Date().getTime();
, 1000*3600*12) // 12 hours in ms
&lt;img id="myImage" src="http://www.hamqsl.com/solar101pic.php" /&gt;

通过在 URL 后添加 ?randomstuff,您可以强制浏览器获取文件的新副本,因为它没有被识别为在缓存中。

【讨论】:

【参考方案2】:

您要手动更新图片的链接吗?还是网址中的“101”会增加?

如果链接是静态的,除了某种数字整数,那么我会使用 JavaScript 将 HTML 注入您的网页。检查:

var imgHtml = '<img src="http://www.hamqsl.com/solar101pic.php">';
document.getElementById('tag-id').innerHTML = imgHtml

您可以使用 Date.now() 函数获取纪元时间,然后使用 MOD(%) 设置适当的间隔。这就是你得到 12 小时的方式。我会留给你找出来。

【讨论】:

图片由网站服务器更新【参考方案3】:

setInterval(function() location.reload(); , 5000);

更新

我认为您的逻辑无法解决问题,因为浏览器会在您打开它时开始计数,因此图像将在打开 12 小时后更改,而不是在特定时间,因此您必须选择

    在服务器端设置图片网址 为时钟上的每个小时分配一个图像

【讨论】:

是的,我现在正在改变它 OP 想要刷新图像,这里给出的 4 个解决方案中有 3 个建议重新加载整个页面。投反对票。【参考方案4】:

window.location.reload(true) 强制页面重新加载而不使用缓存版本。 (MDN)

您可以通过这种方式实现计时器:

setTimeout(function()  
  window.location.reload(true);
,4.32e+7); // 12 hours refresh rate. This is the time, in milliseconds.

关于setTimeout (MDN)的更多信息。

【讨论】:

OP 想要刷新图像,这里给出的 4 个解决方案中有 3 个建议重新加载整个页面。投反对票。【参考方案5】:

您可以使用 Javascript 的 setTimeout 函数,该函数会在事件达到指定的计时器(以毫秒为单位)时触发:

setTimeout(function()
    window.location.reload(1);
, 3600);

或者您可以使用以下元标记(以秒为单位):

<meta http-equiv="refresh" content="3600" />

编辑:只是想到了一个更好的方法。使用 jQuery 删除元素然后重新绘制元素怎么样?

【讨论】:

强制用户刷新页面的用户体验相当差。我不会推荐这两种解决方案中的任何一种。 @Richie 我们正在回答 OP 的要求。他不是要求提供 UX 优雅的解决方案,而是要求我们刷新他的页面。 @JeffNoel 他不是在问如何刷新他的页面,而是在问如何更新图像。有一些不那么突兀的方法。 OP 想要刷新图像,这里给出的 4 个解决方案中有 3 个建议重新加载整个页面。投反对票。

以上是关于如何在每个特定时间刷新图像? JavaScript [重复]的主要内容,如果未能解决你的问题,请参考以下文章

带有 Javascript 的随机光标图像

javascript - 有没有办法在不刷新页面的情况下在 div 上上传和预览图像(替换背景图像)?

javascript:刷新时选择的随机图像

源更改时刷新图像[重复]

如何刷新未显示的选项卡

JavaScript 静态图像在刷新时旋转