【问题标题】:Image reload causes flicker only in firefox图像重新加载仅在 Firefox 中导致闪烁
【发布时间】:2013-01-20 05:14:27
【问题描述】:

我正在创建一个网站,它从远程系统传输实时数据图像并将其显示在网站上。这些图像每 5 秒在远程站点更改一次,因此我们会自动重新加载/刷新这些图像。 问题:图像刷新在 IE 和 chrome 上正确流畅地进行,但在 Firefox 中,每次自动刷新都会导致闪烁。这是不受欢迎的行为。我该如何解决? PS 我正在使用 joomla 文章,其中嵌入了所需的 javascript

     <center>  
     <img id="pic" src="images/CB1.jpeg" border="0" width="700" height="700"/></center>
     <script language="javascript" type = "text/javascript">
      function refresh() 
       {         
      document.images["pic"].src = "images/CB1.jpeg" + "?" + new Date().getTime();
       }
      window.onload=function(){
      setInterval(function(){refresh()}, 5000 ); 
      }
     </script>

这是嵌入在 joomla 文章中的脚本。图片大小约为 300~350 KB。

【问题讨论】:

  • 你有演示页面吗?
  • 您可以将两个&lt;img&gt;s 放在一起,重新加载底部(不可见)的一个,并在通过onload 加载时将其移到前面。我相信闪烁来自 FF 已经在加载图像时渲染了图像。
  • @scourou 感谢您的快速回复。很抱歉,我无法提供网站网址,因为该网站位于我办公室的本地计算机上,并且我目前还没有域。因此,我添加了我正在使用的代码。如果您将此代码放在普通的 html 页面中,它会提供相同的行为,请提供帮助。谢谢
  • @Cobra_Fast 您好,感谢您的回复。你能解释一下把隐藏的 标签移到前面是什么意思,这样我就可以在网上查到了。谢谢

标签: javascript image firefox refresh


【解决方案1】:

由于无法在您的机器上进行测试,我不能肯定地说,但我认为 Cobra_Fast 是正确的,因为图像在完成加载之前正在渲染。要解决此问题,请确保在新图像完成加载之前不要替换旧图像。这应该有效:

<img id="pic" src="images/CB1.jpeg">

<script language="javascript" type = "text/javascript">
function refresh() {
    // create new image obj
    var image = new Image();

    // replace the existing image once the new image has loaded
    image.onload = function () {
        document.images["pic"].src = image.src;
    }

    // set the source of the new image to trigger the load 
    image.src = "images/CB1.jpeg" + "?" + new Date().getTime();
}

window.onload=function(){
    setInterval(function(){refresh()}, 5000 ); 
}
</script>

【讨论】:

  • 嗨,我尝试运行您提供的代码。它仍然闪烁 :( 我是按原样使用您的代码,还是需要自定义它?对不起,如果我的问题听起来很愚蠢。我不太精通 javascript!
  • 我在 FF 中用一些测试图像对此进行了测试,但我没有得到任何闪烁 - 只是一个非常即时的变化。也许这不是加载的问题。你可以上传你在某处使用的图像,以便我可以用它们进行测试吗?只需两张连续的图像就可以了。
  • 感谢您抽出时间进行测试并告诉我。我在这里面临两难境地。该脚本在两个测试 m/cs 上闪烁,但在第三个它可以正常工作,如您所说。我不知道可能出了什么问题。主要办公机器是运行 18.0.1 Firefox 的 windows 2008 r2 服务器...感谢所有帮助。
  • 这很奇怪。我会看看机器之间的差异。 FF版本是否相同?它甚至可能是图形渲染差异。可以说,如果它在某些方面起作用,但在其他方面不起作用,那么问题可能不在于代码。
  • 我在几台机器上测试过,我发现你说的是真的。闪烁仅出现在网络服务器机器上,而没有任何客户端机器上。感谢您的回复
猜你喜欢
  • 2013-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多