又是一个IE莫名其妙的bug:做了一个弹出层,层里面是一张透明图片,IE下的iframe默认会有一个白色的背景,所以当iframe的外围背景并不是白色的时候,这个iframe就会显得非常的“与众不同”。
这个背景是iframe本身的,不是iframe内的html元素的,所以,只对iframe进行相关设置就能去掉这个背景。
iframe有一个并不常用的属性:allowTransparency,意思是是否允许透明——蛋疼的是IE下好像默认是false,很多大网站的iframe上也没有加上这一条,所以这讨厌的白色背景经常会看到。
现在对iframe如下设置:<iframe allowTransparency="true" />(观影团这个用过,比较管事)
现在允许透明了,那是不是就搞定了呢?为了保险起见,还是手动设置一下iframe的背景透明吧。CSS如下:
iframe{background: transparent;}
至此,问题就已经解决了。但还有一些特殊情况:有时候iframe不是HTML中本身写的,是用Javascript加载进来的,这时虽然以上的CSS可以生效,但却没法给iframe本身加上allowTransparency属性了,这时候怎么办呢?
迫不得已,只有用JS了。
window.onload = function(){
var ifra=document.getElementsByTagName('IFRAME');
for(var i=0,l=ifra.length;i<l;i++) {
ifra[i].setAttribute('allowTransparency','true');
}
}
用javascript中的setAttribute方法来设置iframe的allowTransparency,以上代码没什么说的,但请放入只针对IE的注释中,因为这代码对firefox,chrome之流是不必要的。