理想情况下,我们将使用不同的浏览器来支持相同的标准和代码,从而在所有浏览器上产生相同的结果。
那还没有发生。原因为何?
gopher
。
理想情况下,我们将使用不同的浏览器来支持相同的标准和代码,从而在所有浏览器上产生相同的结果。
那还没有发生。原因为何?
gopher
。
Answers:
不,这是不现实的,因为规范有时会令人困惑,而且每个人对事物的理解都与他人不同。毕竟我们只是人类。当只有一个供应商提供一种产品版本时,就只有一个真正的标准。
乔尔(Joel)在这个主题上写了一篇很棒的文章,叫做《火星耳机》。
我想在这里引用他的话,因为这是最好的解释,说明只要涉及不同的供应商,为什么我们永远不会看到这种情况:
这些文件太混乱了。规范中充斥着诸如“如果同级块盒(不漂浮且没有绝对定位)跟随磨合盒,则磨合盒将成为块盒的第一个内联盒。磨合不能运行到已经以磨合开始或本身就是磨合的块中。” 每当我读到这样的内容时,我都会怀疑有人如何正确地符合规范。
而且,市场上存在竞争和发展。以自动完成框为例。每个主要的浏览器都已经有它们,但是还没有定义标准。W3C太慢了,等到该标准问世时,已经有5种不同的实现方式在野外出现了不同的行为,如果要提高竞争力,也需要支持。此问题的另一个主要示例是视频的嵌入。
也就是说:只要您需要支持各种不同的浏览器和环境,就准备进行调整。
不可以,因为许多规范中的W3C都将某个地方的实现责任交给UA实现者(浏览器实现者)。之所以这么说,是因为我通常直接根据W3C规范撰写文章,并查看这些案例。例如,W3C表示浏览器应就共享位置(通过Geolocation API)征得用户的同意,但未说明如何提出要求。这可能会导致不同类型的消息在不同的浏览器中以不同的方式显示(弹出,向下滑动等)。
一般来说,我们可以这样说:
只要有一些多元化的需求实现,浏览器之间的一致性就很难实现。
当W3C 命令性地告诉浏览器实现者时,我们只能看到一致的浏览器。
这种情况极不可能很快发生-实际上,我什至可以说,当这种情况发生时/这是一个强有力的信号,表明世界已经发生了变化,并且不再关心网络浏览器了。
问题非常简单:为浏览器可以做的更酷的事情编写新标准的大多数限制是缺乏(甚至是合理的)与现有标准的一致性。从一个稍微不同的方向来看,分钟的浏览器符合现有标准(甚至相当接近符合标准),几乎可以肯定,至少有几个人会开始思考“但是,如果我们可以...”,然后他们将做以下两件事之一:他们要么在一个浏览器中实现他们的想法,然后标准化他们的想法(几乎不可避免地在任何其他浏览器实现它之前),要么他们将即使没有浏览器实现该行为,也可以为该行为编写标准。
最重要的是,跨浏览器执行标准几乎不可避免地落后于要遵循的新标准的发明。浏览器能够追赶的唯一方法是,如果人们放弃编写/设计新的东西供浏览器去做。
同时,我有义务指出,反之亦然或多或少也是正确的:这是一组不断增长的标准,浏览器越来越紧密地遵循这些标准。不久之前,Acid3测试中所有浏览器的最高分是93/100。碰巧的是,这与IE当前获得的分数完全相同...