JavaScript Img onload 在 IE 7 失效的解决办法.
转自:
http://blog.mmclub.net/index/view/article_id/36
?
网站改版的时候碰到一个问题, 那就是 JavaScript 对页面内的图片处理的时候, 在IE 7 下居然失效了. 测试表明 IE6, FF 都没有问题, 唯独 IE7 对img的 onload 事件不理会. 折腾了半天. 发现原来是 IE 缓存引起的毛病.
??? 比如通常我们对页面的图像重新格式化显示的时候(为什么格式化显示? 很明显后台编辑和前台显示不是同样的尺寸的时候, 图像会影响页面的布局.) 这样做就可以了.??? 通常这样是可以处理了. 但是IE在页面重复刷新的时候, 读取的是缓存里的图片. 速度非常快. 这样的话不知道为什么它就忽略了 onload 事件了. 比较恶心. 处理办法是先告诉浏览器图片载入后要干啥, 然后再去载入图像. 这样就能让IE继续响应图像的 onload 事件了. 像下面的代码:
- <script?type="text/javascript"> ?????var?imgs?=?doucument.getElementsByTagName("img"); ?
- ????for(var?i?=?0;?i?<?imgs.length;?i++)?{ ?????????var?newImg?=?new?Image(); ?
- ????????newImg.src?=?imgs[i].src; ?????????newImg.onload?=?function(){ ?
- ???????????//?处理图像显示各项属性.比如最简单宽度不能大于500px ????????????if(newImg.width?>?500)?{ ?
- ???????????????imgs[i].style.width?=?500?+?'px'; ????????????} ?
- ???????????//?其他的处理.... ????????} ?
- ????} ?</script>?
??? 这样就可以啦. 本站这次被这个小毛病阴了一次. 很生气.
- <script?type="text/javascript"> ???var?imgs?=?document.getElementsByTagName("img"); ?
- ??for(var?i=0;?i<imgs.length;?i++)?{ ?????var?newImg?=?new?Image(); ?
- ????newImg.onload?=?function()?{ ???????//?这里使用处理图像载入后的CODE ?
- ????} ?????newImg.src?=?imgs[i].src; ?
- ??} ?</script>?