解决在IE下label中IMG图片无法选中radio的几个方法

今天遇到一个问题,在IE浏览器下,使用label FOR radio后,label中的图片无法选中。例如,这样的代码 <input type="radio" name="radio" id="a" /><label for="a"><img src="/Labs/images/logo.gif" /></label> ,这种情况下,点击label的图片将无法选中radio选项。解决这个问题,目前可以有三种方法,分别是通过JS、CSS或者HTML代码3个方面来解决。

方法一,JS:

window.onload = function(){
if(document.all && navigator.appVersion.indexOf("MSIE")>-1 && navigator.appVersion.indexOf("Windows")>-1)
{
var a = document.getElementsByTagName("label");
for(var i=0,j=a.length;i<j;i++){
if(a[i].hasChildNodes && a[i].childNodes.item(0).tagName == "IMG")
{
a[i].childNodes.item(0).forid = a[i].htmlFor;
a[i].childNodes.item(0).onclick = function(){
var e = document.getElementById(this.forid);
switch(e.type){
case "radio": e.checked|=1;break;
case "checkbox": e.checked=!e.checked;break;
case "text": case "password": case "textarea": e.focus(); break;
} } } } } }

方法二,CSS:

在图片上覆盖一个容器,容器本身透明显示

<input type="radio" name="radio" id="a" /><label for="a"><img src="xxx.jpg" /><span></span></label>

将其中SPAN的属性设定有底色并且透明,SPAN覆盖到IMG上,并保持和图片同样的尺寸。

display:block;
width:100px;
height:100px;
background:url(xxx.png) no-repeat 0 0;
position:absolute;
left:0;
top:0;

方法三,THML代码控制:

在IMG中加一个属性,disabled 即可。

三种方法都是可行的解决方案,从实用方面,当然是第三种方法最简单,操作和实施起来最快,兼容性也好。问题是,以上仅仅是这种情况下的解决方法,如果从经验方面,三种方法都有自己的优势。

IE8 现形记

IE8 推出以后,大约网络中也会不少的反应,这个新的浏览器在没有什么预期的情况下冒出了脑袋,把所有的网站吓了一下。其中最忙以及最郁闷的应该是这些网站的前端设计师,一些的标准让人受不了,很多CSS代码开始适应不了,出现头晕脑胀状态。在大环境的驱动下,小站点似乎并没有什么反应,很多大型的门户却是出现走版甚至不能使用的状态。浏览了一些目前比较流行以及知名度高的网站,比如Yahoo、新浪、阿里巴巴、亚马逊、TOM等等,都出现了或多或少的走样情况,最惨的是TOM,信息无法载入。

Internet Explorer 8 Standards Support
Developers and designers of all skill levels need great tools to deliver modern websites and write more efficient code without having to switch between the browser and a separate development environment. Internet Explorer 8 includes built-in tools that work well for professionals as well as those trying CSS and scripting for the first time.

Debug JavaScript
View and change the document object model (DOM)
CSS 2.1
Data URI
AJAX enhancements including navigation

阿里巴巴右侧菜单掉到底部

亚马逊的菜单隐藏功能失效

易趣顶部走版

Google Reader菜单走版

新浪顶部走版

TOM信息无法载入

雅虎顶部走版

类似这样的情况,微软公司的浏览器IE7以后就开始不怎么样又好了。或许对于普通的用户来说,浏览器并不是什么重要的东西,特别对于国内的用户。上网的就是游戏或者电影,似乎除了这两个娱乐工具外,计算机并没有体现出自己的智能。有人说,在网络发展到今天,计算机充其量只是一个IE的硬件支持,这次IE的更新或者会产生一些言论。正面的或者负面的,发展中的事务总是这样。不过这次,会累死一批前端设计师的;努力吧,前端设计师们。

Internet Explorer 7 Yahoo版

IE7.0更新信息是最近的流行话题,这个占绝对市场优势的浏览器一直以来都倍受关注,浏览器更新牵涉到很多方面,比如中文域名或者浏览器地址栏竞争。测试的结果是:支持中文域名的输入;地址栏默认搜索是Google搜索结果(为什么不是Live搜索,这点让人惊讶;或者说微软不希望在推出新浏览器的时候接受负面信息,安抚GFans的心?或者说我是通过Yahoo下载的版本关系);其他的比如分页效果以及多个默认主页设计都值得体验。

Congratulations!

You have successfully upgraded your browser to the new Windows Internet Explorer 7 optimized for Yahoo!
» Go to Microsoft IE7 product tour

IE7.0的用户体验似乎满足了目前流行的2.0风格;虽然不能自定义版面,不过添加了很多功能进一步满足用户使用需求,其中包括Rss订阅以及新的收藏夹模式等等。细节方面是IE7的字体似乎经过消除锯齿处理,看起来平滑许多,特别是西文拼音什么的;中文的差异不大。

虽然在很早前就想体验一下IE7.0正式版,不过微软官方网站下载速度实在不敢恭维;无论在线更新或者下载安装都需要几十分钟;Yahoo的下载速度就很快,不知道Yahoo版本的IE7.0和微软官方的IE7.0有什么区别,大概就增加几个插件,浏览器提示变成了"Windows Internet Explorer provided by Yahoo!"。目前仍然只有提供英文版本,中文版还需要几周或者几个月时间,不过对于浏览器来说语言的影响并不大。

建议下载地址(Yahoo):http://downloads.yahoo.com/internetexplorer/index.php
微软官方下载地址:http://www.microsoft.com/china/windows/ie/downloads/default.mspx