HTML select 元素 disabled 属性在主流浏览器中的表现

本文测试了不同浏览器对HTML select元素的支持情况,发现IE8、IE9和Chrome存在无法正确显示selected属性的问题,并提供了一种通过CSS样式修复该问题的方法。

测试页面源代码

我们有以下测试文件 test.html:

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml">
3 <head>
4 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
5 <title>Test</title>
6 </head>
7 <body>
8 <div>
9 <select size="5" disabled="disabled">
10 <option value="C1">Black</option>
11 <option value="C2">DarkCyan</option>
12 <option value="C3" selected="selected">DarkRed</option>
13 <option value="C4">DarkMagenta</option>
14 </select>
15 <select size="5">
16 <option value="C1">Black</option>
17 <option value="C2">DarkCyan</option>
18 <option value="C3" selected="selected">DarkRed</option>
19 <option value="C4">DarkMagenta</option>
20 </select>
21 <input type="text" />
22 </div>
23 </body>
24 </html>

然后看看这个 HTML 文件在主流浏览器中的表现。

Opera

opera

可以看出,显示效果非常好,disabled 的控件背景是灰色的,正确地标示出 selected 的项目。

Mozilla Firefox

Firefox

显示效果也很好,disabled 的控件前景是灰色的,也正确地标示出了 selected 的项。

Google Chrome

Chrome

Chrome

显示效果非常不好,disabled 的控件前景是灰色的,但是 selected 项的内容悲剧了。

Apple Safari

Safari

Safari

显示效果也很好,disabled 的控制前景是灰色的,selected 的项目也被正确地标示出来了。

Microsoft IE 的各种版本

IE 5.5

IE 6

IE 7

Microsoft IE 5.5、IE 6 和 IE 7 的显示效果基本上是一样的,都相当不错,disabled 的控件前景是灰色的,也正确标示出 selected 的项目。这三个版本的浏览器已经过时了,不能算是主流的浏览器,但是 IE 6 在我国应该还是有相当的市场的。

IE8

IE 9

IE 8 和 IE9 悲剧了,disabled 的控件前景是灰色的,这很好。但是 selected 的项目没有被标示出来,这是个很严重的 bug。这两个版本浏览器是主流的浏览器,Windows XP 最高只能安装到 IE 8,Windows Vista 最高也只能安装到 IE 9。

IE 10

IE 10 的显示效果也非常好,disabled 的控件背景是灰色的,正确标示出 selected 的项目。不过 IE 10 需要 Windows 8 操作系统才能安装。

总结

Microsoft IE 5.5、IE 6、IE7、IE 10、Mozilla Firefox、Apple Safari 和 Opera 等浏览器对 HTML select 元素的 disabled 属性支持都很不错。而 IE 8、IE 9 和 Chrome 都有 bug,不能很好支持。不知道有没有办法在 HTML 源代码补救这一 bug。

补救办法

将 test.hmtl 改为如下所示:

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml">
3 <head>
4 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
5 <link href="Main.css" type="text/css" rel="stylesheet" />
6 <title>Test</title>
7 </head>
8 <body>
9 <div>
10 <select size="5" disabled="disabled">
11 <option value="C1">Black</option>
12 <option value="C2">DarkCyan</option>
13 <option value="C3" selected="selected" class="selected">DarkRed</option>
14 <option value="C4">DarkMagenta</option>
15 </select>
16 <select size="5">
17 <option value="C1">Black</option>
18 <option value="C2">DarkCyan</option>
19 <option value="C3" selected="selected">DarkRed</option>
20 <option value="C4">DarkMagenta</option>
21 </select>
22 <input type="text" />
23 </div>
24 </body>
25 </html>

其中 Main.css 如下所示:

1 option.selected {
2 color: White;
3 background-color: Cyan;
4}

这样在 IE 8、IE 9 和 Chrome 18.0 浏览器中也能正常显示了,如下所示:

IE 9.0

Chrome 18.0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值