兼容性问题是如何产生的
首先我们看一则笑话,如果用枪来比喻各浏览器的话,其中chrome,ff等都是NB轰轰的枪。而IE?渣就算了,枪头还要反过来?这是闹哪样。
再回归正题。2001年微软发布了XP和IE6,在当时是世界上标准执行得最高的浏览器,并且有很多私有技术和容错技术,使得顶峰市场份额达到98%。于是骄傲的微软不理睬W3C,W3C也把微软抛弃,两家分道扬镳越久,标准的相差就越来越远。遗留下的兼容性问题就交到了现在的前端开发者身上了。
说白一点,浏览器是一个(X)HTML/CSS/Javascript等语言的解释执行环境,h1能解释为标题,a能解释为连接,都是浏览器定义好的,这一份定义从一开始定制时有偏差,最终会导致解释的结果就会差得很远,就产生了浏览器兼容性的问题。
如何看待兼容性问题
w3c标准才是WEB发展的正确趋势,所以我们要先熟悉 w3c标准,整体的网页应该以标准为准。
- 先在兼容w3c的浏览器上进行开发调试,尤其是HTML结构布局。
- 再结合一些常见兼容性积累,在开发阶段就解决IE678的怪异问题。
- 然后实地测试,保证产品/项目中不存在一些BUG。
- 最后阶段,我们必须要在自己的积累中添加前一阶段遇到BUG的解决方法,用框架和文档去规范自己,快速解决我们的将来会遇到的重复或类似问题。
IE6
全球IE6实时数据:http://www.ie6countdown.com 中国大陆一枝独秀。在实际项目中,要不要兼容IE6,兼容到哪个程度。我觉得这可以归结为一种项目/产品成本的考虑问题:如果兼容IE6,那么我们的开发人力时间及其他成本要增加多少,回报有多少。鉴于国情,也很难一下子咔嚓掉这个问题。就好像IC芯片的银行卡比磁条的要好用安全,一夜之间全国所有磁条卡都不能用,ATM全换了,时间人力成本根本不可能,公众(例如我)也不会接受。再细分一点吧,各行业这个情况也不太一样,金融、gov和医疗行业恐怕是老大难了。甚至还见过有医院里面是用WIN2000+IE5.5。 对于此我只有两点意见: 1. IE6兼容得再好,效率肯定没有V8引擎的chrome来得快,而且很多兼容是以效率为代价的。 2. 不要因为忙于兼容IE6,而不去理会HTML5/CSS5等新标准,IT人员总是要向前看的。
兼容性问题的思考
随着移动互联网的兴起,移动设备的兼容问题成为一种新的问题。当时项目实际遇到的问题是:双击与单击的问题。而且移动端的兼容问题最大的还是分辨率问题,这个也不是某个厂家刻意为难人的,是客观存在的。普及语义化标签,能一定程度上解决这个问题;响应式布局,也是应此而兴起的。
由于时代是不停在发展的,所以兼容性问题肯定会长期存在,我们也不必抱着一种厌倦的态度去看待;而且我觉得这个问题的解决正是前端开发人员的一部分价值体现所在;最后,在解决了重复的问题之后,一定要有所归纳,有所收获,令自己的价值提升。兼容,不仅是指向后兼容,还包括对未来可能出现问题的处理。