IE6下CSS图片缓存问题
ie6下如果用css图片平铺,会出现cpu短暂100%的情况,主要原因在于,ie6会重复下载图片。
用一句代码即可搞定:
document.execCommand("BackgroundImageCache", false, true);
当然为了其它浏览器上能正常通过,需要做下判断后调用,才更安全:
if(Browser.isIE6){
try{
document.execCommand("BackgroundImageCache", false, true);
}
catch(e1){}
}
平台检测代码可以这样写,摘自Ext源码:
var Browser = {};
try{
(function(){
var idSeed = 0,
ua = navigator.userAgent.toLowerCase(),
check = function(r){
return r.test(ua);
},
DOC = document,
isStrict = DOC.compatMode == "CSS1Compat",
isOpera = check(/opera/),
isChrome = check(/\bchrome\b/),
isWebKit = check(/webkit/),
isSafari = !isChrome && check(/safari/),
isSafari2 = isSafari && check(/applewebkit\/4/), // unique to Safari 2
isSafari3 = isSafari && check(/version\/3/),
isSafari4 = isSafari && check(/version\/4/),
isIE = !isOpera && check(/msie/),
isIE7 = isIE && check(/msie 7/),
isIE8 = isIE && check(/msie 8/),
isIE6 = isIE && !isIE7 && !isIE8,
isGecko = !isWebKit && check(/gecko/),
isGecko2 = isGecko && check(/rv:1\.8/),
isGecko3 = isGecko && check(/rv:1\.9/),
isBorderBox = isIE && !isStrict,
isWindows = check(/windows|win32/),
isMac = check(/macintosh|mac os x/),
isAir = check(/adobeair/),
isLinux = check(/linux/),
isIpad = check(/ipad/),
isSecure = /^https/i.test(window.location.protocol);
extend(Browser,{
isOpera:isOpera,
isIE:isIE,
isIE6:isIE6,
isFirefox:isGecko,
isSafari:isSafari,
isChrome:isChrome,
isIpad:isIpad
});
})();
}catch(e){}
//上面extend方法也很easy
function extend(obj1,obj2){
for(var o in obj2){
obj1[o] = obj2[o];
}
return obj1;
}