您的位置:首页 > 其它

ie 处理 gif动画 的onload 事件的一个 bug

2008-05-04 15:46 447 查看
如果 <img>标签的 src为一个 gif 动画,那么他的 onload事件会重复触发。

firefox就没有这样的问题。

先看一个简单的事实:

<SCRIPT LANGUAGE="JavaScript">
var img=new Image();
img.src="attachment/1178365293_0.gif";
img.onload=function()
{
alert("如要关闭请按住ESC键不放,并点击关闭按钮");
}
</SCRIPT>

如果不出所料的话你的IE应该弹出一大堆alert提示窗口了。注意是“一大堆”!

原因很简单:IE对多帧GIF的onload事件重复执行,即每播放完一次动画,就重新执行一次onload事件。

(注:按下ESC键会停止gif动画的播放,故也会停止onload事件执行)

看下面的代码:

<img src="http://zi.csdn.net/intel_120x60.gif" onload='gorush(this)'>
<script type="text/javascript">

function gorush(obj){
alert("如果img的src为多帧gif动画,这个会重复弹出")
}
</script>

解决办法:

<img src="http://zi.csdn.net/intel_120x60.gif" onload='gorush(this)'>
<script type="text/javascript">

function gorush(obj){
alert("这样,就只会弹出一次")
obj.onload=null;
}
</script>

如果 src设置为 静态 gif 或者 jpg ,bmp等其他格式,也不会出现这个bug
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: