我们想要什么
已发表: 2022-03-10我认为我们会遇到麻烦,尽管我不能肯定地说。 麻烦——我知道的麻烦。 不过,它的入口; 我只听说过。 我只做了十年。 上次我错过了所有的引导。 我可以肯定地说——我从经验中知道的——是我从来没有在愤怒中实现过一个不后悔的愿望。
十年(我不介意说)是一段相当长的时间。 回到当我第一次踏入网页设计实习的道路时,好的 ol' Internet Explorer 已经是一个笑柄。
“如果你注意到你的一部分内容出现又消失,并且页面的某些部分只画了一半,这些都是元素需要布局的良好迹象。 [...]hasLayout
修复只涉及声明一个 CSS 属性,该属性会导致元素获得布局,而默认情况下它通常不会有布局。”
— Internet Explorer hasLayout 属性
我讨厌 IE。 我觉得我现在可以应付了。 我尽量不这样做; 我真的,真诚地做到了。 我会告诉人们支持很有趣,如果你能相信的话。
随着所有其他浏览器变得越来越容易处理,我试图说服自己至少对古怪的旧 IE 仍然存在挑战。 这甚至成为了一种自豪感:我非常擅长修复晦涩难懂的 IE 问题,以至于在我的日常开发过程中学会了避开它们,没有什么(好吧,更少)害怕大“开放”它在 IE 中,看看什么坏了”阶段。
在某种程度上,这很有趣。 好玩。 那是我对自己说的谎言。
/* Fixes #2588: When Windows Phone 7.5 (Mango) tries to calculate a numeric opacity for a select (including “inherit”) without explicitly specifying an opacity on the parent to give it context, a bug appears where clicking elsewhere on the page after opening the select will open the select again. */
— jQuery 移动源
我讨厌它。 我对 IE 的每一个化身都非常讨厌,在会议上的恶作剧。 我和其他人一样讨厌它。
“Internet Explorer 6 有一个令人费解的错误,涉及多个浮动元素; 最后一个浮动元素中的文本字符有时会在最后一个浮动元素下方重复。 ... 直接原因只不过是普通的 HTML 注释,例如<!-- end left column -->
,夹在按顺序出现的浮点数之间。”
— Explorer 6 重复字符错误
浪费我该死的时间就是这样。 所有这些小时,我都在一个笨拙的虚拟机上弯腰驼背——重新加载,等待,对一个无意义的错误进行无意义的修复,重新加载,崩溃,再次打开 IE,等待,仔细检查缓存是否不是一个因素,重新加载,等待,并重复。 我本可以利用我的时间做更多的事情——我可以学到更多。
我确信它不仅阻碍了我的工作,它不仅阻碍了网络,而且阻碍了我作为一名开发人员。 关于第二点,我想我并没有完全错——我积累的所有晦涩难懂的 IE 6-7 浏览器错误知识现在都毫无用处。 我所要展示的只是对“过滤器”这个词的一种不自觉的退缩,一种对padding
而不是margin
的不可思议的偏好,以及一种根深蒂固但基本上没有根据的对z-index
的恐惧。
“……如果实际的类名是其他类名的子字符串(或超字符串),额外的空格会导致错误的样式被选中。”
— IE5/Mac 空格解析错误
我希望它会消失。 被法律禁止的一种聪明且广泛传播的病毒卸载后,微软最终决定减少他们劣质渲染引擎的损失并改用 Firefox 的渲染引擎 Gecko——不管怎样——让它消失。 但不是。 网络不断发展,我们开发人员奋力前行,逆流而上,不断回到过去。
Chrome 出现了,Firefox 不断改进,新功能不断推出,响应式网页设计的出现所带来的令人兴奋和无限的可能性在我们面前展开,而且(顺便说一句)记住你只有几天的时间让它在旧 IE 中或多或少地工作,所以不要太得意忘形。
“如果您使用的是 IE8,并且您使用的是上述 CSS 有序列表编号方法,并且具有使用counter-reset
和counter-increment
CSS 属性的类的 HTML 在页面加载时是隐藏的,那么无论何时隐藏显示 HTML,所有自动数字都将为零,但前提是该页面上使用了 CSS:hover
PSEUDO-CLASS!”
— IE8“悬停”错误:有史以来最令人敬畏的 IE 错误?
很难想象现在会经历这种挫败感,至少对于我们这些相对较老的人来说。 并不是说这些天在跨浏览器上进行调整所涉及的工作量并不多——我非常清楚有。 但是当你听说 CSS Grid 在一个浏览器上的工作方式略有不同时,很难不感到偶尔的痛苦,“在我的时代,我们只有浮动,让我告诉你 IE 的双边距错误”给另一个。
我错了; 我想明确这一点。 沮丧并没有错。 我认为不应该责怪任何人对那些旧的浏览器错误感到沮丧,就像我不认为任何人应该因为他们现在对 Web 开发的任何方面的沮丧而受到责备一样。 不,我对愤怒带给我的结论是错误的:希望看到三叉戟被烧毁,曾经站立的土地被盐渍化。
我怀疑从这片盐碱地中只会产生一种具有戏剧性讽刺意味的东西:对于新一代的 Web 开发人员来说,同样的挫败感,重新诞生。 当我开始我的职业生涯时,也就是浏览器大战之后的几年,这些种子已经生根发芽了。 因为,有一段时间——在我之前的一段时间——我们 Web 开发人员以同样的方式诅咒 Netscape。 更弱、更错误、更糟糕的浏览器。 但是 Internet Explorer——开发人员喜欢那个浏览器。 他们希望那些其他浏览器——坏的浏览器——能够消失:被一种聪明且广泛传播的病毒卸载,被法律禁止,Netscape 最终决定减少他们劣质渲染引擎的损失,并切换到 IE 的渲染引擎 Trident——不管怎样——只是让它消失。 那些难以理解的 Internet Explorer 错误并非巧合或疏忽。 它们的出现是因为 Internet Explorer赢了,我们喜欢它是因为它赢了。
看,我们的挫败感和愤怒像往常一样欺骗了我们。 他们告诉我们,支持其他更糟糕的浏览器不仅阻碍了我们的工作,也不仅阻碍了网络,而且阻碍了我们作为开发人员。 浪费我们该死的时间就是这样。 所以,我们告诉自己,这不仅是为了我们自己的利益,也是为了整个网络的利益。
我们对 IE 的权重稍微重了一点。 我们在我们的决定中给予了它更多的发言权。 就这样,拿着这么多芯片的微软相应地打了他们的牌——谁能怪他们呢? 每个人首先为他们建立网站,然后其他人。 他们的话不是法律,但肯定不仅仅是建议。 当然,它们到处都偏离了网络标准(只是一点点),但毕竟,The Biggest Browser 实现的东西不是一种事实上的标准吗? 此外,支持更好、更快、更简单的浏览器就是为网络本身提供服务! 我们与 Microsoft 一起推动网络向前发展! 每个人都赢了。
今天为微软 Edge 浏览器提供支持的渲染引擎——EdgeHTML——是老旧 Trident 的一个分支。 毫无疑问,它是 Trident 的一个精简和大幅改进的分支,但它并不是,可以说,普遍地根据其自身的优点来判断。 EdgeHTML 团队一直在处理一些缺点:首先是技术上的,因为它需要花费大量的时间和精力才能赶上 Safari、Firefox 和 Chrome 之类的东西。 第二个是情绪化的。 是我们——你和我——厌倦了多年的 Internet Explorer,冷冷地盯着一个欢快的蓝色小写字母“e”。
几周前,Edge 团队宣布他们将很快放弃 EdgeHTML,转而使用支持 Chrome 的渲染引擎 Blink。 随着这一变化,三叉戟最后剩下的余烬将被永远熄灭。 我与这么多人分享的愿望最终将实现。 具有讽刺意味的是——事实证明——EdgeHTML 正在成为一个非常可靠的渲染引擎。
Blink 是一个由 Google 领导和管理的开源项目。 它为 Chrome 和 Opera 提供支持,后者在几年前同样放弃了他们自己开发的渲染引擎。
以压倒性优势,Blink 是(并将越来越多地成为)世界各地的网络体验方式。 Blink 快速、稳定、包含现代功能,并且 - 与仍在发展的 EdgeHTML 的开发相比 -无痛。
将我们从那些古老的 IE 错误中拯救出来可能为时已晚,但现在我们的工作将更容易,因为支持的渲染引擎减少了。 你和我将失去一点我们集体的“但它是否可以跨浏览器工作”的负担。 我们的项目会更顺利,网络会失去一些曾经阻碍它的东西。
作为网络引擎的管理者,谷歌的话不会是法律,但肯定不仅仅是建议。 也许在接下来的几年里,它们会以最微小的方式到处偏离 Web 标准(无论是有意还是无意)。 但毕竟,由 The Biggest Browser 实现的东西本身不就是一种事实上的标准吗? 再说了,你怎么争辩? 毕竟,偏爱更好、更快、更强大的浏览器正在为网络本身提供服务。 我们将与 Google 一起推动网络向前发展。 每个人都会赢。
也就是说,只要很少的标准偏差和微小的、唠叨的错误不会随着时间的推移而变得更大——这要归功于熵和自满的双重力量。 除非我们为了网络的利益而做出的决定(与一家臭名昭著的隐私敌对广告公司携手合作)开始感觉有点阴暗,并且一个新的恶魔开始在我们的脑海中形成——除非我们发现我们过去的恐惧和挫败感再次升起(就像一只凤凰,它渲染了几百像素的距离,当你滚动时,它会以一种奇怪的方式闪烁)。
在接下来的几年中看到更新、更令人兴奋的渲染引擎并不需要太多的想象力。 由于缺乏支持而看到它们失败,就像我们偏爱“每个人都使用的浏览器”一样——首先是选择,后来可能是勉强为“底线”服务。
不过,我也不知道。 我自己从未见过渲染引擎会发生这种情况。 我刚刚听到了整个故事,我只知道第一手的故事结局。 我从旧的精神伤疤的痛苦中知道结局; 来自对某些代码的不自觉退缩,以及迫使我避开其他代码的肌肉记忆。 我从会议谈话中的笑话中知道了这一点,这些笑话总是让人觉得有点累,但仍然以一种我不允许自己承认的方式产生共鸣,并且仍然说出了我内心深处的一个秘密愿望。 一个苦涩的、可恨的愿望。
但是,嘿,听着。 不再。 现在,我的意思是——我永远不会。 我真的很喜欢一个好的渲染引擎错误,现在。 我愿意。
“使用perspective()
的 CSS 3D 变换是由内向外渲染的。”
— bugs.chromium.org
我的意思是,这实际上是一个有趣的错误,对吧? 就像,在某种程度上很有趣。 你知道吗?
好有趣。
会很有趣的。