我想不通。
是因为制作浏览器的人不在乎吗?是因为我们作为开发人员已经编写了 hack 代码来解决在浏览器 X 和 Y 中不起作用的问题吗?
我想不通。
是因为制作浏览器的人不在乎吗?是因为我们作为开发人员已经编写了 hack 代码来解决在浏览器 X 和 Y 中不起作用的问题吗?
我讨厌成为链接 Joel 文章的人,但这篇文章是该问题的最佳答案之一。
http://www.joelonsoftware.com/items/2008/03/17.html
不幸的是,它太长了,以至于当您阅读它并认为哇这是一篇了不起的文章时,您会忘记您是如何到达那里的以及应该升级谁。:)
有一场浏览器大战,最终被 Internet Explorer 赢得,其中供应商故意实现与其他浏览器不兼容的功能,以使那些带有为 Netscape 4.5 设计的小徽章的网站。
通过不兼容和拥有独特的功能,微软赢得了浏览器之战,至少在几年之内。
你有没有试过在标准兼容的浏览器中使用复杂的 CSS?很难创造任何东西,因为标准很复杂。我想实现更加复杂。
许多网站在设计时都考虑到了错误的 HTML 实现(请参阅我的第一部分)。如果所有浏览器都实现了 100% 兼容的渲染引擎,那么很多网站都会崩溃。他们正试图逐渐把它弄好。
规范中的许多边缘情况未指定/未指定,浏览器最终以不同的方式实现它们(例如,HTML 在 v5 之前未能指定错误恢复)。
大范围的“标准”是浏览器战争遗留下来的事实标准,没有适当的规范——如果有的话(例如 DOM0)
一些规范简直难以理解且难以实现(例如 CSS 视觉格式化模型——匿名框、折叠边距和内联格式化上下文的细节可能会让你头晕目眩)
对于浏览器供应商而言,与现有页面完美兼容比实施不会很快为他们带来竞争优势的新功能/标准更为重要。如果标准和网站不一致,网站总是会赢(这就是为什么 W3C 不得不采用 HTML5 以避免变得无关紧要)。
也许是因为浏览器在 w3c 标准之前就已经存在,并且不会为了满足不断变化的需求而从头开始重写。我认为他们在逐步实现新功能方面做得很好。
你在说什么浏览器?WebKit 和 Opera 的引擎都对 W3C 标准有相当好的支持(例如,不久前都通过了 Acid3)。火狐在某些方面有些欠缺,但还是很不错的。IE...嗯,IE 如此流行,以至于微软并不在乎,而且微软也不知道如何与其他人相处融洽。
当然,即使是最符合标准的浏览器仍然允许在解析 Web 标记时有点松散,但这主要是因为从历史上看,网页设计师/开发人员也没有真正努力地符合标准。
实际上,大多数浏览器在支持开放标准方面都非常出色,包括世界上一些最古老的浏览器,例如 Opera(大约 15 岁)和 FireFox,它在某种程度上基于 Netscape,就像 1993 年或我思考。
唯一有“w3c 标准问题”的是微软,坦率地说,为什么他们“有这么多问题”我认为你应该问他们。但我的猜测是,他们在支持标准方面看不到任何“钱”,因为这将使创建便携式应用程序和促进竞争等变得更加容易......
话虽如此,目前挪威正在进行一场大规模的运动,以永久杀死地球表面的 IE6,请在此处阅读一些亮点;http://ra-ajax.org/ground-zero-in-the-ongoing-war-against-ie6.blog
这个是我最喜欢的;)
为了“保护” IE(尤其是对标准的支持更差),他们声明要保持与最后 1 亿个期望 IE 中的“旧”行为的网站向后兼容。
好消息是,在 IE8 中,如果您的页面设置正确,您可以在默认情况下期待更好的基于标准的渲染和脚本执行。
Dilbert 希望加入促进 Web 服务标准的行业联盟。
华而不实 - http://www.dilbert.com/strips/comic/2005-12-31/
不那么浮华-http: //www.dilbert.com/fast/2005-12-31/
这只是拥有所有供应商都不会支持的标准的一部分。我们可能会猜到,浏览器开发人员在为浏览网页的用户添加或增强功能而不是重构他们的解析器和布局代码以使其更加一致方面感到压力更大。
基本上,它似乎“足够好”,因为我们都知道如何跳过箍来绕过它。
问题之一是保持向后兼容旧站点。例如,如果许多符合标准的浏览器是为 IE6 和更早版本制作的,则它们将无法正确显示网站。作为补偿,更流行的浏览器(IE7/8 和 Firefox 3)试图弥补上限 - 保留尽可能多地显示 Web 的能力(即使页面不兼容),同时也接近 W3C 标准.
我怀疑这将在几年内成为一个非问题。
这是一个“多对多市场”。
阅读 Joel Spolsky 的优秀文章。
如果浏览器完全符合标准,那么大多数网站将无法访问。必须有一个妥协。