【问题标题】:Why won't image auto refresh为什么图片不会自动刷新
【发布时间】:2013-10-24 22:32:04
【问题描述】:

尝试让图像使用 javascript 刷新一定次数,然后停止(以避免生成大量缓存)。这段代码不起作用,所以不确定缺少什么?

<script>
var c = 0;
function fnSetTimer()
{
document.getElementById('refreshimage1').src='http://68.116.42.142:8080/cam_4.jpg?\'+new Date().getMilliseconds();
var t = setTimeout(fnSetTimer,5000);
c=c+1; 
if(c>5) 
clearTimeout(t); 
} 
</script>
<img src="http://68.116.42.142:8080/cam_4.jpg"; id="refreshimage1" onload="fnSetTimer()" width="400" /> 

但是,这段代码确实有效:

<img src="http://68.116.42.142:8080/cam_4.jpg"; id="refreshimage2" onload="setTimeout('document.getElementById(\'refreshimage2\').src=\'http://68.116.42.142:8080/cam_4.jpg?\'+new Date().getMilliseconds()', 5000)" width="400" />

因此,如果您将两者并排放置,则底部图像会(无限期地)刷新,但顶部图像只会加载一次并且永远不会刷新。有什么想法是我在顶部代码中遗漏的吗?

【问题讨论】:

  • 你的代码中真的有?\'+ 吗?将其更改为?'+

标签: javascript image timer refresh


【解决方案1】:

问题是函数重新加载图片,调用函数,重新加载图片...

图片网址也有问题 - '\' 用于转义特殊字符,如果你想要一个斜线,你需要两个 - '\\'

把它放在你的标题中

<script language="javascript">

function fnSetTimer(image, src, counter, limit)
{
    image.onload = null;

    if(counter < limit)
    {
        counter++;
        setTimeout(function(){ fnSetTimer(image, src, counter, limit); },5000);
        image.src= src+ '?\\'+new Date().getMilliseconds();
        alert(counter); // show frame number
    }
} 
</script>

把它放进身体里

<img src="http://68.116.42.142:8080/cam_4.jpg"; id="refreshimage1" onload="fnSetTimer(this, this.src, 0, 5);" width="400" /> 

这应该会为您解决这个问题 - 它只会触发一次 onLoad,然后循环 5 次,您应该能够在 Wordpress 等中编辑图像标签。

确保为每张图片提供不同的 ID

【讨论】:

  • 谢谢!当我将脚本放在标题中时,这很有效。不幸的是,我使用的是 wordpress 站点,这意味着我必须将脚本加载到 header.php 中,或者调用 .js 文件。我正在尝试制作可以在每个页面上编辑的内容,因此不幸的是脚本无法进入 HEADER 部分。而且,当我把它全部放在 BODY 中时,这段代码似乎不起作用。如果您知道在 x 次工作后停止刷新图像的方法,并且全部从 BODY 调用,请告诉我?也感谢您的出色回答-
  • - 我已经更新了,把函数放在你喜欢的地方 - 没关系。您可以在 Wordpress 中编辑图像标签。
  • 最后一个问题 - 在同一页面上刷新多个图像需要什么?事实上,只有第一次刷新,即使其余的都有唯一的 ID。
  • 你为什么不在原来的问题中问这个?
  • 我应该问那个...我把它归咎于一个新生儿和睡眠不足。很棒的逻辑,超级好用。再次感谢您
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-02
  • 2015-12-31
  • 1970-01-01
相关资源
最近更新 更多