Home > Web > 也谈谈Web的标准与兼容

也谈谈Web的标准与兼容

December 4th, 2012 12:49 Leave a comment Go to comments

一直以来都订阅mg12的博客,今天看到一篇文章《如何让开发者兼容你的浏览器》,说的是对于现今出现的许多网站(特别是针对移动设备的网站)只支持Webkit核心的浏览器而不支持其他例如Opera(Presto核心)、IE10等浏览器的看法,mg12认为是浏览器做的不够好,开发者才将那些用户较少的浏览器排除到“兼容”列表以外,而解决之道是浏览器应该“兼容”开发者的Web代码,而非开发者去“兼容”浏览器。对于文中的许多观点,不敢苟同。可以看出mg12应该是Webkit的铁杆粉丝,但文中多处,不知是有意偷换概念还是对Webkit的崇拜盲目了他的眼睛,对于“标准”与“兼容”的解释,实在是与我的理解相差甚远。

先说说IE6

mg12的文中提到了IE6,但我认为其实IE6完全是一个过时的浏览器,它产生于Web几乎还没有标准化概念的年代,应该说在当时IE6还可以算很先进的,引入了很多可以增强Web页面表现力与功能的技术,虽然这些技术是IE独有的,在其他浏览器上不支持,但不得不说,在当时的互联网,很多业务都是依赖于这些技术才得以实现的。IE6后来发生的问题,在于Web标准化开始推行后,大量用户依旧在使用Windows XP与IE6,而没有升级到标准化支持得更好的IE7、8、9,造成了Web开发者为了兼容广泛使用的IE6而不得不写单独针对的代码。但是我认为这个问题的根本症结不在于IE6本身,而应该去指引用户升级到更新的浏览器。应该说IE6在当时的年代还是很辉煌的,而我们不能用现在的眼光去评判一款10年前的浏览器。

兼容?标准?

浏览器厂商总在宣扬做好兼容是前端开发工程师的天职, 以此来向这群苦逼的开发洗脑. 而事实是他们只考虑自己的浏览器使用率, 你见过微软在 IE6 称霸的时候让你去兼容 Firefox 吗? 另一个事实, 前端开发的职责不是兼容浏览器, 而是通过前端技术推动网站的业绩.

浏览器厂商们, 少来忽悠, 多推标准. 开发们要的是一句代码兼容所有浏览器, 而不是增加一句代码多兼容一个浏览器.

这是mg12在文章中的原话,可以看出做前端开发确实是一件很辛苦的活。但其中提到的关于“兼容”的说法却并不是很对。在Web标准化的今天,我们应当遵循标准,开发者按标准编写Web代码,浏览器按标准进行支持与解析。Webkit不是标准,Html5、CSS3、标准化的Javascript才是。而现在说的很多页面只支持Webkit浏览器的情况是怎么回事呢?是只有Webkit支持这些标准而其他浏览器都不支持吗?其实不是的。一句代码兼容所有浏览器是有的,只是有些人不用。

-webkit-前缀

CSS中,带特定厂商前缀的属性是扩展属性,在标准之外的,某个厂商希望加入的新的特性,比较常见的有-webkit-、-moz-、-o-、-ms-等,在CSS的新标准确定之前,提议的新属性暂时会以扩展属性的形式进行实现,而当标准确定之后,W3C则建议使用不带前缀的标准属性以便所有浏览器都支持。比如:

.box_bgsize {
      -webkit-background-size: cover;
}

这是webkit的扩展属性,是webkit特有的,其他浏览器不支持。而当它被标准吸纳之后,应该使用标准化的写法:

.box_bgsize {
      background-size: cover;
}

或者,2种都写以便支持早期(实验阶段)的Webkit浏览器:

.box_bgsize {
      -webkit-background-size: cover;
      background-size: cover;
}

这样,各种浏览器都只要支持同一套标准,所有按标准编写的页面都能在任何浏览器上正确显示。而Opera与IE所呼吁的,正是希望开发者使用标准的属性名称,而非使用带-webkit-前缀的非标准的属性。附上2篇相关的文章:

如何让WebKit优化的网站更兼容

Adapting your WebKit-optimized site for Internet Explorer 10

这2篇文章中举了很多例子,说明大量的带-webkit-前缀的属性其实都是有相应的标准属性的,而很多开发者却只在代码中包含-webkit-扩展属性,连标准属性都没有。我非常不能理解写出这样的代码却还要求Opera、IE等其他浏览器支持。我认为这样的网站甚至不能称为Webkit-optimized,而是Webkit only。不可否认各个浏览器在标准的支持上存在差别,对标准的覆盖程度也存在差异,优秀的Web开发者能够使他的页面在任何浏览器上都能正确显示,而一般的开发者,请至少在有标准可依的时候,使用标准代码而不是-webkit-前缀的代码

最后,引用网友CNCico的评论作为结语:

希望开发者们在开发的时候,不要总是把webkit 作为圣经,webkit不是标准。web开发需要遵循标准,而这个标准就是让兼容所有内核的浏览器。

分享到:
Categories: Web Tags: , , , , (4,886 views)
  1. August 11th, 2014 at 16:34 | #1

    You actually make it sedm so eaasy with your presentation but
    I find this matter to be actually something that I think
    I would never understand. It seems too complicated and extremely broad for me.
    I am looking forward for your next post, I will try to get the
    hang of it!

  1. No trackbacks yet.