为什么期望所有浏览器都支持相同的标准是不现实的?[关闭]


12

理想情况下,我们将使用不同的浏览器来支持相同的标准和代码,从而在所有浏览器上产生相同的结果。

那还没有发生。原因为何?


1
“相同的代码在所有浏览器上都会产生相同的结果。” -这不是标准的目的。“相同的代码可以在所有浏览器上正常工作”更加接近了。
tdammers 2011年

1
我多年来一直在问这个问题
billy.bob 2011年

1
不幸的是,不...我一直很期待。
Corv1nus 2011年

我们所知的网络只有一次像gopher
dmckee ---前主持人小猫,

因为W3C是一个运转不佳的组织,无法跟上技术的步伐。就是这样。
约旦

Answers:


18

不,这是不现实的,因为规范有时会令人困惑,而且每个人对事物的理解都与他人不同。毕竟我们只是人类。当只有一个供应商提供一种产品版本时,就只有一个真正的标准。

乔尔(Joel)在这个主题上写了一篇很棒的文章,叫做《火星耳机》

我想在这里引用他的话,因为这是最好的解释,说明只要涉及不同的供应商,为什么我们永远不会看到这种情况:

这些文件太混乱了。规范中充斥着诸如“如果同级块盒(不漂浮且没有绝对定位)跟随磨合盒,则磨合盒将成为块盒的第一个内联盒。磨合不能运行到已经以磨合开始或本身就是磨合的块中。” 每当我读到这样的内容时,我都会怀疑有人如何正确地符合规范。

而且,市场上存在竞争和发展。以自动完成框为例。每个主要的浏览器都已经有它们,但是还没有定义标准。W3C太慢了,等到该标准问世时,已经有5种不同的实现方式在野外出现了不同的行为,如果要提高竞争力,也需要支持。此问题的另一个主要示例是视频的嵌入。

也就是说:只要您需要支持各种不同的浏览器和环境,就准备进行调整。


11

不可以,因为许多规范中的W3C都将某个地方的实现责任交给UA实现者(浏览器实现者)。之所以这么说,是因为我通常直接根据W3C规范撰写文章,并查看这些案例。例如,W3C表示浏览器应就共享位置(通过Geolocation API)征得用户的同意,但未说明如何提出要求。这可能会导致不同类型的消息在不同的浏览器中以不同的方式显示(弹出,向下滑动等)。

一般来说,我们可以这样说:

只要有一些多元化的需求实现,浏览器之间的一致性就很难实现

当W3C 命令性地告诉浏览器实现者时,我们只能看到一致的浏览器。


好人,赛义德=)+1
猎鹰

谢谢@猎鹰。这是我的第二个问题。但是,那个人获得了许多反对票,并删除了:D。我想大家都知道,就IE而言,IE是最不标准的浏览器。
2011年

7

不会以您描述的形式发生。

然而; 如果您保守地编写代码,那么编写在所有新浏览器上可靠且可预测地工作的代码并不需要太多。在过去的十年中,我们已经走了很长一段路要走-甚至IE当前也正确地实施了W3C建议的很大一部分,足以实际创建与浏览器无关的网站。

当然,如果您要执行建议中未提到的事情,或者使用模糊指定的功能,或者仍未正确实施(或根本不实施)的功能,那么您就自己了。


1

这种情况极不可能很快发生-实际上,我什至可以说,当这种情况发生时/这是一个强有力的信号,表明世界已经发生了变化,并且不再关心网络浏览器了。

问题非常简单:为浏览器可以做的更酷的事情编写新标准的大多数限制是缺乏(甚至是合理的)与现有标准的一致性。从一个稍微不同的方向来看,分钟的浏览器符合现有标准(甚至相当接近符合标准),几乎可以肯定,至少有几个人会开始思考“但是,如果我们可以...”,然后他们将做以下两件事之一:他们要么在一个浏览器中实现他们的想法,然后标准化他们的想法(几乎不可避免地在任何其他浏览器实现它之前),要么他们将即使没有浏览器实现该行为,也可以为该行为编写标准。

最重要的是,跨浏览器执行标准几乎不可避免地落后于要遵循的新标准的发明。浏览器能够追赶的唯一方法是,如果人们放弃编写/设计新的东西供浏览器去做。

同时,我有义务指出,反之亦然或多或少也是正确的:这是一组不断增长的标准,浏览器越来越紧密地遵循这些标准。不久之前,Acid3测试中所有浏览器的最高分是93/100。碰巧的是,这与IE当前获得的分数完全相同...


0

理想情况下,我们将使用不同的浏览器来支持相同的标准和代码,从而在所有浏览器上产生相同的结果。

这就提出了一个问题,为什么我们需要不同的浏览器。如果所有人都做基本上相同的事情,那么一个浏览器就足够了。那确实是理想的。不再进行无用的重复工作,也不再使用针对浏览器的代码。人们最终可以在坚实的基础上开始建设。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.