圖片緩存BUG導致Ajax無效的解決

        關於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.onerror=null;
if(a==null) {
a=imgHash[src]=[];
a[0]=new Image();
a[1]=e;
a[0].onload=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 onerror='regImg(this,"http://www.cauf.net/images/cauf.gif")' src="about:blank" onclick="window.navigate('http://www.cauf.net');">

             如此,頁面中的Ajax相關腳本均可以順利運行。

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章