刷新后GIF动画无法播放

17

第一次加载页面时,如果有带动画的 gif 文件,它会正常播放(持续大约 2 秒钟)。

但是在刷新页面(按 F5)之后,这个 gif 文件将不再播放,只会显示最后一帧的动画。

我能做些什么来确保每次都播放?

5个回答

15

对于 PHP 来说,比使用 date("Ymdgis"); 更好的选项是使用 time(),像这样:

<img src="picturePath.gif?<?php echo time();?>" />

你的回答永远让我不再需要使用Ctrl+F5!谢谢。 - hd.

12

这是一种影响所有浏览器的奇怪行为..
我通常使用这个脚本手动刷新页面 (它使用jQuery)

<img id="gif_animata" src="picturePath.gif">
<script type="text/javascript">
    var gifSource = $('#gif_animata').attr('src'); //get the source in the var
    $('#gif_animata').attr('src', ""); //erase the source     
    $('#gif_animata').attr('src', gifSource+"?"+new Date().getTime()); //add the date to the source of the image... :-) 
</script>

这会刷新图片的src,添加当前日期,因此浏览器会重新加载它,认为它是一张新的图片。

否则,以PHP的方式(我更喜欢这种方式):

<img src="picturePath.gif?<?php echo date("Ymdgis");?>" />

//for the browser it will seems that's a new picture!
<img src="picturePath.gif?2012092011207">

当我在网站上应用那个PHP方法时,GIF的显示会有大约一秒的延迟,但是在本地主机上却没有。你知道为什么吗? - john-jones
是的,我注意到了那个小问题,但我并不在意,因为那只是很短的时间... :-) - sekmo
如果你找到了答案,请告诉我,因为我真的很想知道。 - john-jones
如何在这种情况下处理背景图片? - sprabhakaran
在CSS中插入一些PHP代码,例如div.animated{background:url(image.gif?<?php echo date("Ymdgis");?>);} - sekmo
1
九年后,这段代码仍然帮助了我。感谢上帝,因为这个可爱的东西叫做互联网,我的gif图像可以在飞行中保持新鲜,再过9年也是如此。 - gears244

3
这个问题对我来说有效的解决办法是使用JavaScript手动重新加载GIF。
用CSS实现的GIF(背景图片)。
var element = document.getElementById(name);
element.style.backgroundImage = "none";  
element.style.backgroundImage = "url(imagepath.gif?"+new Date().getTime()+")";

HTML中实现的GIF(img标签)

var element = document.getElementById(name);
element.src = "";  
element.src = "imagepath.gif?"+new Date().getTime();

感谢 @sekmo

1
这个有效,只需要在下面加一行代码。我建议一开始不要填写<img>的src属性,这样页面就不会尝试加载任何不必要的资源。
<img id="gif" src=""/>
<script>document.getElementById('gif').src="path_to_picture.gif?a="+Math.random()</script>

-2

可能是因为您的浏览器只显示了缓存版本。尝试按住Shift键并刷新页面,看看是否有效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接