pngfix = function() {
var els = document.getElementsByTagName('*');
var ip = /\.png/i;
var i = els.length;
while ( i-- > 0 ) {
var el = els[i];
var es = el.style;
if (el.src && el.src.match(ip) && !es.filter) {
es.height = el.height;
es.width = el.width;
es.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + el.src + "',sizingMethod='crop')";
el.src = clear;
} else {
var elb = el.currentStyle.backgroundImage;
if (elb.match(ip)) {
var path = elb.split('"');
var rep = (el.currentStyle.backgroundRepeat == 'no-repeat') ? 'crop': 'scale';
es.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + path[1] + "',sizingMethod='" + rep + "')";
es.height = el.clientHeight + 'px';
es.backgroundImage = 'none';
var elkids = el.getElementsByTagName('*');
if (elkids) {
var j = elkids.length;
if (el.currentStyle.position != "absolute") es.position = 'static';
while ( j-- >0 ) if (!elkids[j].style.position) elkids[j].style.position = "relative";
}
}
}
}
}
var els = document.getElementsByTagName('*');
var ip = /\.png/i;
var i = els.length;
while ( i-- > 0 ) {
var el = els[i];
var es = el.style;
if (el.src && el.src.match(ip) && !es.filter) {
es.height = el.height;
es.width = el.width;
es.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + el.src + "',sizingMethod='crop')";
el.src = clear;
} else {
var elb = el.currentStyle.backgroundImage;
if (elb.match(ip)) {
var path = elb.split('"');
var rep = (el.currentStyle.backgroundRepeat == 'no-repeat') ? 'crop': 'scale';
es.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + path[1] + "',sizingMethod='" + rep + "')";
es.height = el.clientHeight + 'px';
es.backgroundImage = 'none';
var elkids = el.getElementsByTagName('*');
if (elkids) {
var j = elkids.length;
if (el.currentStyle.position != "absolute") es.position = 'static';
while ( j-- >0 ) if (!elkids[j].style.position) elkids[j].style.position = "relative";
}
}
}
}
}
window.attachEvent('onload',pngfix);
如果使用这段js来使得IE6背景透明的话,那么当使用jquery框架来写切换的时候,如果切换的那个类有个背景图片是使用png格式的话,那么次方法就出现问题了,必须要要改成其他的格式,这个问题找我一天才发现,原来滤镜的使用是一次性的,此次记忆深刻啊