Tom Warren 在 The Verge 上发表的“Chrome 正在变成新的 Internet Explorer 6”一文,其标题对我们前端网页开发者来说,暗示了 Chrome 正在变成一个技术落后且充斥着棘手 bug 的浏览器。除了偶尔听到的一些随意的、泛泛的评论,比如“Chrome 最近变得很糟糕,”我们都知道这并不属实。Chrome 通常在良好的网页技术方面处于领先地位。
相反,这是一个同样令人担忧的危险:开发者专门针对 Chrome 构建网站。理论上,这并不是真正存在的,因为如果你使用网页标准(实际上没有多少替代方案)构建一个网站,它在 Chrome 中的效果和其他任何现代网页浏览器一样。但如果你构建的网站是为了某种方式阻止其他浏览器,只允许 Chrome,那么它确实存在。Warren
Google 一直是我们在网上开始看到很多“最适合 Chrome 的网站”信息的中心。Google Meet、Allo、YouTube TV、Google Earth 和 YouTube Studio Beta 都会阻止 Windows 10 的默认浏览器 Microsoft Edge 访问它们,并指示用户下载 Chrome。Google Meet、Google Earth 和 YouTube TV 也不支持 Firefox,并会提示用户下载 Chrome。
我不会称之为流行病,但它不是一个好趋势。据我所知,它是服务器端的 UA 嗅探,它完全阻止了网站。

如果有什么区别的话,我认为你应该让人们使用网站,并在你真正担心某个特定功能可能无法正常工作时显示一个警告。或者更进一步,修复它。我对他们为什么选择阻止某些浏览器没有后台了解,但很难想象有什么技术限制会强迫他们这样做。如果是这样,我建议让他们公开宣布,以激励其他浏览器支持所需的功能,假设它是已建立的标准。
比浏览器特有的网站更令人担忧的是,看到浏览器发布非标准化功能,仅仅因为他们想要,而不是出于任何供应商前缀或标志的缘故。曾经有一段时间,如果浏览器这样做,网页开发者会拿起干草叉。但我感觉到某种自满情绪正在蔓延。
如今,这种氛围更多地集中在抱怨其他浏览器缺乏对某些事物的支持。例如,一个浏览器发布了一些东西,我们在 caniuse 中看到一个绿点,然后我们就痛斥其他浏览器赶快跟上。相反,我们可能会问,现在发布这个功能是明智的吗?
自从我们最终决定供应商前缀是一个坏主意之后,没有哪个现代浏览器再发布供应商前缀了。这样做的一个副作用是,在 CSS 或 JavaScript 中发布一个新功能会更加冒险。我认为将一个没有前缀的功能发布到浏览器的稳定版本,意味着该功能是标准化的,不会发生重大变化。然而,这种情况一直在发生。
在 CSS 中,Chrome 发布了 motion-*
属性,但随后这一切都变成了 offset-*
,旧的 motion-*
属性就停止工作了。这不仅仅是令人讨厌,这种事情有助于开发者证明他们说“我只针对 Chrome 构建这个网站,如果你想使用它,就使用 Chrome”的理由。也许对于演示来说还不错,但对于整个网页行业来说,这很糟糕。同样,我对这种情况没有特别见解,我只是一个从外部观察的开发者。
这是我前几天看到的另一个 CSS 问题。人们对 text-decoration-skip: ink;
感到兴奋,因为它看起来很棒,而且对人们有帮助。他们正在广泛使用它。但显然,这并不是它的正确名称?它已经被更改为 text-decoration-skip-ink: auto;
,因此 Chrome 64 正在 废弃 text-decoration-skip: ink;
。即使积极尝试,也很难跟上这些变化。
Chris Krycho 最近也 谈论了这个问题
在过去几年中,我越来越多地看到标题为“新功能即将登陆网页”的文章——然后是关于 Chrome 如何实现一项新的实验性功能的内容。“你很快就能使用它!”是他们的承诺。
现实情况要复杂一些。有时,Chrome 团队开创的想法会传播到其他浏览器,并成为我们都可以使用的工具。有时……它们会被搁置,因为没有其他浏览器决定实现它们。
很多时候,当出现后一种情况时,开发者就会抱怨那些“阻碍网页发展”的其他浏览器制造商。但这种看待问题的方式存在一个根本问题:Chrome 不是标准。Chrome 提出一些东西,甚至是一堆开发者喜欢它,但这并不构成标准。它也不强迫其他浏览器优先考虑它,甚至不强迫它们发布它。
我并非要把 Chrome 推向火坑。我是一个 Chrome 粉丝。我相信所有主要供应商都有类似的例子。我只是想提醒大家小心。网页是构建的最佳平台,它通常正在朝着一个让这一点更加真实的方向发展。最容易破坏这一点的方法是,在标准方面不够小心。
只是在这里大声思考一下,但我不知道是否可以通过在浏览器控制台中警告实验性功能来解决一些提到的问题。
这样,每当开发者使用实验性功能时,我们就会收到一个提示,提醒我们注意并可能提供一个指向 chromestatus/ mdn/ caniuse 文档的链接。
(这与浏览器已经记录到控制台的弃用警告完全相反)
这感觉类似于 Apple 仅支持 Safari 用于直播其活动。或者 Windows 操作系统会在你每次启动第三方浏览器时弹出一个弹出窗口,说“嘿!你试过 Edge 吗?”。这是一个品牌试图通过给普通网页用户带来不便来强迫他们使用自己的特定专用浏览器。它似乎纯粹出于贪婪,而不是任何特定浏览器所宣传的具体技术规格。
看着 Apple 的直播也在 Microsoft 的 Edge 上工作。
我可能错了,但我认为他们这样做是为了抵消 Google 在其所有网站上实施的相同策略。
这从来不是 Apple 阻止其他浏览器的问题。任何支持 HTTP Live Streaming 的浏览器都可以使用。只是多年来,Safari 是唯一实现 HTTP Live Streaming 的浏览器。其他浏览器依赖 Flash——多年——才能播放直播视频或任何自动调整其比特率的视频。
他们的信息只是以普通观众能够理解的方式表达出来。如果信息是“您的浏览器不支持 HTTP Live Streaming”,这对 90% 的观众来说毫无用处。“改用 Safari 观看”对他们来说是可操作的。
为什么这闻起来像是 90 年代末浏览器大战的开端?Internet Explorer 4 对阵 Netscape 4。这是我不喜欢前端工作的原因之一,为了取悦九种不同方式的六个人,要以三种不同的方式编写相同的东西。
写得很好,有一些很好的观点。我现在非常依赖 Google 服务,所以一直都在使用 Chrome,但我不想看到它发展到我无法合理使用 Firefox 做同样事情的地步。
是的,我认为这实际上也为我总结了
我想说,Safari 在更像 IE6 而不是 Chrome 方面也有责任。它在网页标准方面比任何其他浏览器都落后,并且与操作系统 (iOS) 深度集成,以至于其他浏览器不允许在该操作系统上运行,并且只有当整个操作系统更新时它才会收到更新。
Chrome 的问题不在于 Chrome 本身,而在于那些糟糕的开发者太懒了,或者可能是出于恶意,不遵循开放标准。
我同意。
还需要记住的是,除非我被骗了,否则 Chrome 在访问 Google 网页时使用的是 Google 自己的 Http 协议。谁知道他们在幕后做了哪些优化。我并不是说这是正确的做法,但绝对值得考虑和研究 :)
他们使用过他们自己的实验性协议,称为 SPDY,但它后来被整合到了 HTTP/2 标准中。
您可能指的是 QUIC 协议,如果它仍在使用中,您应该在 chrome://net-internals 中找到它(如果我记得没错)。
帕累托法则。如果事情总是在一个浏览器中运行良好,而大多数人都在使用它,为什么要迎合其他浏览器?或者甚至讨论它呢?
好吧,你不应该期望必须支持像 Brave 这样的浏览器。但支持现代 IE、Chrome、Firefox,可能还有 Opera 的讨论应该始终放在桌面上。为什么不支持它们?如果某个功能不受支持,很可能会有某种解决方案,这样你就可以跨浏览器兼容并扩大你的受众群体。
我有点愧疚写了这样的消息。主要是针对日期输入类型和其他类似的东西,我不愿意为不支持它的浏览器(比如 Firefox)编写代码(Firefox 最终在 5 年后赶上了)。
所以,与其浪费时间在这些落后的浏览器上,我决定如果它们不支持特定的一组功能,就阻止它们。
问题是 FF 粉丝认为 FF 是领先的浏览器之一,但这与事实相差甚远,因为他们落后于 Edge!
你怎么认为 Fx 落后于 Edge?Fx 在标准支持方面一直领先于其他所有浏览器(Opera 除外)。即使现在,Fx 在 Web Assembly 方面也遥遥领先。
我记得为多个浏览器开发的混乱情况。如果有人没有发现其中的问题,那是因为他们是新手开发者,没有经历过那个时代。在以后重写你的 CSS 时,祝你好运。
我已经开发了很多年,我没有发现其中的问题。但我确实看到了不费心使东西跨浏览器兼容的问题。这表明你要么不在乎,要么懒惰,要么不知道怎么做。只有最后一点是可以原谅的。
一旦其他浏览器在对最新 EcmaScript 功能的支持方面与 Chrome 相当,我可能会考虑不再限制浏览器支持。否则,抱歉。IE 不是浏览器。修复它。
我可能在 Chris 和 Tom 的文章中错过了这一点,但为什么 Google 认为他们的一些产品在其他浏览器上无法正常运行?是因为他们忽略了 Web 标准,还是因为他们严格遵循了标准并突破了其他浏览器尚未达到的界限?(这是一个真诚的问题,而不是我草率地得出结论)。
我确实认为你应该构建适合所有人的网站,但如果你正在推动技术界限并发布最新的尖端内容,那么你当然只能期望遵循 Web 标准。如果你的竞争对手没有这样做,那么这应该是他们的客户从他们那里迁移的理由吧?
权力产生权力。Google 规模庞大,他们绕过了 HTML 标准的世界观,试图“引入”不应该在没有完全合规性考虑的情况下添加的元素;仅仅因为他们可以。你认为沃尔玛或亚马逊会通过制作只在特定浏览器上运行的组件来冲破购物世界的闸门吗?使用“工具”仅针对 Chrome 的开发者使用这些资产,因为他们认为他们通过支持 Chrome 的“理念”(IMO)来促进良好的道德。
就像沃尔玛一样,Google 在他们的“社会”(公司决策……接下来是什么,G 员工没有保险)中提供没有经过行业标准完全验证的元素,这一点非常冲动。
当然,可以随意尝试;但不要发布构成 DOM 基础但没有完全跨浏览器支持的一部分。如果你想要一个像独一无二一样的“专用”浏览器,那就随你便吧。但 Chrome 并不特殊。你会用没有经过测试的螺丝来建造空间站吗?就我个人而言,我认为,量子让我加入了 Firefox 的阵营,除非我被迫,否则我从不使用 Chrome。
所以,问题是 Chrome 正在发展并实施新东西,而其他浏览器却没有,所以你总是需要使用第三方,这会使你的应用程序变得更重。
Chrome 不是问题,其他浏览器才是问题,如果我们不使用这些新功能,它们永远不会实现它……
感谢上帝 Google 没有遵循缓慢而过时的 Web 标准,这些标准没有得到足够的演进。
作为一名开发者,你应该为用户编写代码,而不是为浏览器编写代码:-)
所以你是在说苹果应该将所有封闭的应用程序开放给 Android、Windows 和其他平台,因为并非所有用户都使用他们的产品吗?
所以我们不应该因为用户而使用新技术?优雅降级就是为此而存在的,构建一个在 IE9 上运行的应用程序,至少会使应用程序对客户的成本增加 30%,在巴西,我们没有足够的时间来考虑旧的浏览器,客户有时希望应用程序在两周内上线,从头到尾,是的,Chrome 是最好的工具。
作为一名开发者,你应该在截止日期内,使用现有的技术,交付客户想要的东西,即使它最初无法在所有浏览器上运行,只要清楚地告诉客户,它在两周内不会在所有浏览器上运行。
大多数人试图坚持在大多数浏览器上运行,偶尔我会忘记检查一些东西,比如最终的结果……然后花几个小时试图让它工作,通常结果都不如人意!
虽然 Google 不让他们的应用程序在非 Chrome 浏览器上运行并不友好,但我也不相信它试图改变 Firefox 在 Windows 上的性能。当 Chrome 打开时,你打开 Firefox 会需要一段时间,但如果你先打开 Firefox,它会很快打开。也许有更多经验的人可以更好地检查一下。
拥有标准的唯一方法是通过立法,在全球范围内,只允许存在一个浏览器。否则就会有竞争,正如应该的那样。创新总能带来更大的净收益。
浏览器是软件的发布机制,如果你要允许不止一家公司发布软件,你必须接受每个公司都会希望至少拥有一定程度的自由来定制他们的发布管道,以最大限度地提高通过该管道推送的产品的影响力。正如建议所有软件都必须通过 Steam 发布一样荒谬。这虽然是出于好意,但也天真。
问题是当 Google 要求你使用他们自己的代码来获得搜索可见度和速度时。AMP 就是一个典型的例子。
我想念 AOL 浏览器。
在阅读这篇文章时(在阅读评论之前),我一直在想“是的,但引用的网站都是 Google 网站。这不是问题。非 Google 网站不会这样做。”
读完评论后,我真的很惊讶地意识到它确实发生在其他地方。
至于 Google 网站这样做……这些网站可以免费访问。如果唯一需要付出的代价是我必须使用他们的浏览器,这对我来说并不算错。如果你从未为任何东西收费,这算得上垄断吗?
最好的解决方案是根本不使用非标准功能。大多数 Chrome 指定的(或任何其他浏览器指定的)问题都是缺乏标准的结果。但现在,随着 tc39 和 w3c 更新了人们迫切需要的和令人惊叹的新功能,大多数时候,浏览器制造商有责任保持更新。
但随着 babel 热度的出现,每个人似乎都不关心标准,而使用任何看起来方便的东西(遗留装饰器草案)。
总之,我认为浏览器可以更新它们的 API,只要严格遵循标准。而开发者不应该仅仅因为方便而使用非标准功能,在 caniuse.com 等网站上仔细检查它们是一个现代的必要习惯。