Acid 3 测试
Acid 3 测试已正式发布。该测试已开发了一段时间,其中大部分开发是公开进行的。
Acid 3 测试比 Acid 2 测试复杂得多。它涵盖了更广泛的标准,包含更多单独的测试。浏览器必须按阶梯状动态地渲染一系列方框。每当成功通过一组测试时,对应的方框就会填充颜色,这表明该块涵盖的所有测试都已通过。
如果您在当前浏览器的发布版本(Firefox 2、Safari 3、Opera 9、IE7)上运行 Acid 3,您会发现它们的得分都相当低。例如,Safari 3 得分 39/100。然而,这个百分比分数有些误导。实际上,这四款浏览器引擎的情况并没有那么糟糕。
您可以将 Acid 3 测试视为由 100 个单独的测试套件组成。为了让浏览器引擎获得这宝贵的 100 分中的任何一分,它必须通过围绕特定标准的一整套测试。换句话说,这就像要求浏览器参加 100 场独立的考试,并且每场都必须得 A+ 才能获得任何分数。
实际情况是,所有浏览器的表现都比分数显示的要好得多,因为引擎通常都能通过大部分子测试,只是轻微失败导致它们失去了该部分的分数。
发布版本的 Safari 得分 39/100,存在一些明显的渲染错误。自从测试出现以来,我们一直在努力工作,很高兴地报告我们的测试得分已进入“A”区间,达到 90/100。
那么我们修复了什么才获得了这么多分数呢?
Bug 17064 包含了所有细节,但这里是重点内容。
支持 CSS3 选择器
我们添加了对所有剩余 CSS3 选择器的支持。这包括 nth-child、nth-of-type、last-child、last-of-type 等选择器。这些选择器已在 KHTML 中实现,并且 KHTML 开发者甚至在相关的 WebKit Bug 中友善地提供了补丁。因此,这只是一个简单的过程:获取这些补丁,更新它们以适应 WebKit 代码库,然后合并它们。非常感谢 KHTML 开发者在这一领域的辛勤工作。
解析错误
WebKit 存在一些 Acid 3 测试所针对的轻微解析错误。由于测试利用了一个不明显的解析错误(谢谢 Hixie),方框无法正确渲染。此外,还有一些其他的解析错误导致我们无法完全通过单独的测试。我们已经更新了我们的解析器,使其更接近 HTML5 规范中指定的解析规则。
WebKit 以前也从未解析过 DOCTYPE。我重写了 WebKit 的 DOCTYPE 解析代码,使其匹配 HTML5 规范,因此现在如果您在页面中放入 DOCTYPE,它将出现在 DOM 中。此外,许多围绕正确模式解析(怪异模式 vs. 严格模式)的错误现已修复。例如,您可以在新文档中通过 document.write 写入 DOCTYPE 并选择正确的模式。
SVG
Acid3 有许多 SVG 测试。我们一直在努力让这些测试通过。特别是 SVG 字体支持和 SVG DOM 的其他方面已经过测试。剩余的 10 分中许多都是 SVG 失败项。我们将致力于 SVG 动画,以便通过最后几个 SVG 测试。
DOM
Acid3 测试了许多 DOM Level 2 特性,如遍历和范围。它特别关注对象的“liveness”(活性),例如确保在通过动态添加/删除节点来改变文档时,一切都能正确更新。我们在这一领域的大部分失败都与在存在这些动态变化时不表现良好有关(尽管我们往往能通过更静态的测试)。
既然我们正接近 100% 满分,我们将针对每次修复进行博客记录,以便您可以从博客上跟踪我们的进展。