Chris Zacharias 发布了几篇关于 YouTube 团队在 2009 年添加一个横幅要求用户从 IE6 切换到更现代浏览器的理由。
YouTube 惊人的增长带来了喜忧参半的结果,许多故事将被埋没在层层新涂料之下。这就是为什么我想讲述十年前,一个小型网络开发团队如何在 YouTube 内部密谋消灭 IE6 并成功逃脱的故事。
我不记得是什么具体的事件导致我们的网络开发团队在 YouTube 餐厅共进午餐时策划消灭 IE6 的计划。也许是因为我发布了一个包含属性选择器在半支持的 HTML 元素上的 CSS 样式表。任何理智的网络开发者都会期望这会被无法完成任务的浏览器忽略。但 IE 的旧版本并非如此。在特定条件下,IE 中对不支持的 HTML 元素的属性选择器会导致内部递归,最好的情况是浏览器崩溃,最坏的情况是触发蓝屏死机。
这里有很多有趣的事情需要考虑。IE6 对开发者来说是出了名的难以使用,会让团队花费大量时间修复破坏游戏 bug,而这些 bug 通常只占他们网站总流量的一小部分。但是,必须指出,一旦做出这样的决定,该从哪里停止呢?突然之间,制作一个仅限 Chrome 的网站变得更容易,忽略基本的无障碍原则,忽略语义标记,并制作一个为自己优化的网站。这将我们引向更棘手的话题,例如 浏览器多样性 和 专有资源,这些资源似乎 与开放、包容的网络背道而驰.
我在这里想起了 Jeremy Keith 的书,弹性 Web 设计,其中 他写道
如果一个网站使用渐进增强构建,那么即使某个特定功能不受支持或无法加载也没关系:Ajax、地理位置、无论什么。只要核心功能仍然可用,web 设计师就不需要为了将对较新功能的支持塞入旧版浏览器而绞尽脑汁。
Jeremy 还引用了 Mat Marquis,他恰好参与了波士顿环球报的响应式重新设计,他在其中论证道
波士顿环球报上的许多酷炫功能在 JS 出现故障时无法使用;但“阅读新闻”并非其中之一。
也许这里存在一个折衷方案;也许不存在。但我发现 Mat 和 Jeremy 的方法更鼓舞人心,对网络的整体健康更有利。
我希望看到更多像这篇文章一样谈论网络/互联网道德的文章,以至于创建一个新的标签或类别“网络道德”是合理的。太棒了,Robin!
作为一名前端开发人员,我在职业生涯早期不得不支持 IE6,我想感谢
OldTubers
的英勇行为,以及他们为每个人创造了一个更美好的网络。现在,我自己也是一名工程经理,我想通过创建
OldTuber
权限并将其授予从一开始就与我共事的少数值得信赖的资深开发人员来向这些无名英雄致敬。作为一名经常为让 IE6 正常运行而浪费时间的开发人员,我赞扬 Chris 和 YouTube 团队的独创性。全球各地的网络开发人员都欠你们一份感激之情。
我发现你提到开放、包容的网络很讽刺,因为微软有罪,他们向自己的浏览器添加了专有“功能”,试图劫持网络,将其变成 Windows 的扩展。
我认为这篇文章一定是在开玩笑,因为逻辑完全没有道理
– “但是,必须指出,一旦做出这样的决定,该从哪里停止呢?突然之间,制作一个仅限 Chrome 的网站变得更容易,忽略基本的无障碍原则,忽略语义标记,并制作一个为自己优化的网站。这将我们引向更棘手的话题,例如浏览器多样性和专有资源,这些资源似乎与开放、包容的网络背道而驰。” 不,并非如此。这些都是大家共同商定的标准,是您提到的“开放、包容的网络”的组成部分。在 IE6 中,微软决定在许多情况下不遵循开放标准,而是创造自己的标准——这与开放、包容的网络完全相反。
– “渐进增强”。但重点恰恰在于:在 IE6 中,许多现代的渐进增强模式是无法实现的。其他遇到无法理解语句的浏览器会跳过该语句并继续执行——这就是应该的工作方式。另一方面,IE6 并没有这样做,事实上,在遇到这些语句时,它在某些情况下会崩溃。您在这里赞扬的渐进增强,不仅对于该浏览器来说几乎不可能做到,而且实际上阻碍了没有使用该浏览器的用户。
您在这里谈论的更好的方法之所以成为可能,正是因为 web 设计师共同决定不再为 IE6 费力,而是使用标准,并让浏览器开发人员真正遵循这些标准。