惊人发现,ie6下的select隐藏有bug

请在ie6下打开:ie6_js_hidden_select_bug.html

通过:

document.getElementById('J_Test').style.display = 'none';

可以隐藏select元素。

但是通过:

document.body.id = 'page';

配合css代码:

#page select { display: none; }

在ie6下,无法隐藏select元素。
尝试position, setTimeout, 改变zoom到1.001等方法,均失败。

想起ie6下,臭名昭著的select需要用iframe遮罩的bug,估计和上面的bug根由是一样的:在ie6下,select是windowed element,其表现和普通的HTML elements有本质上的区别。至于究竟为何?估计只能去看微软的源码了。

 

总结:

之前也发现过一些类似的问题,当时没有仔细研究过,后来还发现一次问题是select自动隐藏的问题,通过reflow解决了,这个问题明显使用一般reflow的方式是不行的(除非通过在隐藏后通过document.body.innerHTML+=”的方法让页面css重新渲染html)。
测试发现:
1、通过class的方式是可以隐藏的,但是通过id的方式是不能隐藏的。
2、在IE7下,如果某个select或者其父节点(包括body除外的更高层级的祖先节点)如果定义了position:relative,那么也会出现和IE6一样的问题。
在IE8及其他浏览器没有这两个问题。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值