Jim Nielsen 的妈妈无法打开网站。 Jim 努力确认问题并记录了他是如何找到问题的根源的。
“[…] 好吧,这不可能是浏览器问题。我的妈妈不是在使用 Internet Explorer!她使用的是比较现代的技术:一台 iPad(Safari)和一台 Chromebox(Google Chrome)。”
但当我越想越觉得——一个在某些设备上可以正常工作但在其他设备上无法正常工作的网站——我就越意识到这必须是浏览器问题。
所以我就查看了父母电脑上的 Chrome 版本。版本 76!我知道我们在 2022 年已经到了九十多版,所以我估计这就是罪魁祸首。“我只需要更新 Chrome 就可以了,”我想。
结果发现,你不能。
我绝对赞赏常青浏览器这个理念。这是近年来发生在网络中最重要的事情之一。它使网络能够更快地演变,所有浏览器都利用了这一点。
但即使是我认为是常青的浏览器并不总是。最终,硬件会限制软件。比如,“如果使用 Chrome,那么就是常青的”这种逻辑并不那么简单。
Safari 通常通过系统更新进行更新,但在这个案例中,这是一台停留在 iOS 12 上的第一代 iPad Air,而 Apple 认为这台设备是“老旧设备”,所以无法再进行更新。同样的问题也出现在卡在 Chrome 76 上的 Chromebook 上。
几个小小的可选链问号 (?
) 字符搞砸了整个网站。太糟糕了。那个“提供两个包,一个现代包,一个传统包” 的想法仍然非常聪明。
说到妈妈,我想起了 ShopTalk 的一期老节目,我们和 Paul Irish 的妈妈一起录制了,那期节目有许多关于“普通人使用互联网”的氛围。
感谢 Chris。非常及时的帖子!
我们即将从工作中的代码库中删除任何IE11 专用的 JS polyfills、PostCSS(用于 CSS Grid)和 Sass 代码。万岁!
但是,我们仍然会使用您链接到的 Philip Walton 文章中详细介绍的差异化捆绑实现。
我们使用了一个简单的功能检测测试来测试 Fetch 和 IntersectionObserver API。如果测试失败,我们就会假设浏览器是传统浏览器,因此我们会提供转译后的 ES5 代码和一个单独的“polyfills.js”文件。
简单明了。
这就是为什么我尽量减少代码、添加 polyfills、从不使用原始代码的原因。Rollup 用于库,webpack 用于完整页面,以及 browserlist 的最后 2 个浏览器。这样基本的处理方法可以防止出现问题。
虽然我同意我们应该尽可能地使用渐进增强,但开发人员能做的事情是有限的。
我再次将矛头指向那些市值万亿美元的公司。在这种情况下,就是苹果和谷歌。
他们生产一次性设备来推动自己的销售。他们在很短的时间内就停止发布更新和安全补丁,这样他们就可以让你购买他们的下一款更好的产品……
微软遭到了很多批评和负面评价,但它是唯一一家真正支持其操作系统多年来不断更新的公司。他们甚至会在需要的时候发布超出支持期限的安全更新。
开发人员不应该为这些公司的糟糕做法负责。我认为现在是时候开发人员加大力度,向这些公司施压,让他们解决自己的问题了。他们想要控制网络,他们就需要承担随之而来的责任……
我觉得这篇文章有点太快地将矛头指向了网站开发人员,而不是指向谷歌,他们应该比现在提供的时间更长时间地支持其 Chrome OS 设备(尤其是针对旧设备),以及苹果,他们真的应该停止将应用程序和 Safari 特别是与操作系统本身捆绑在一起。