关于IE浏览器的图片缓存BUG问题已经不是什么新鲜事儿了,但近日在开发一个Ajax技术的站点时,却意外地再次同该问题不期而遇。
在使用XMLHTTP request的时候,我意外地发现,由于图片缓存的BUG问题,导致Ajax代码无法执行,通过分析,发现所有的页面唯独首页使用Ajax获取资源列表会因此BUG而停止执行,页面状态栏显示错误,其中错误信息为:对象为NULL。
解决方案:
1、插入如下脚本一段儿:
var imgHash = new Object();
function regImg(e,src){
if(src.indexOf("[%")>0)return;
var a = imgHash[src];
e.οnerrοr=null;
if(a==null) {
a=imgHash[src]=[];
a[0]=new Image();
a[1]=e;
a[0].οnlοad=function(){setImges(a)};
a[0].src=src;
setTimeout("imgHash[/""+src+"/"]=null",65535)
}else{
if(a[0].readyState=="complete")
e.src=src;
else
a[a.length]=e;
}}
function setImges(a){
for(var i=1;i<a.length;i++)
a[i].src=a[0].src;
}
2、替换页面上的图片链接:
<IMG οnerrοr='regImg(this,"http://www.cauf.net/images/cauf.gif")' src="about:blank" οnclick="window.navigate('http://www.cauf.net');">
如此,页面中的Ajax相关脚本均可以顺利运行。