关于浏览器特定 URL 方案

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。 立即开始使用 $200 免费赠送额度!

我们已经介绍过 URL 方案:

URL 方案类似于“http://...”或“ftp://...”。 这些看起来像是您无法控制的非常底层的概念,但实际上您可以!

我会称之为非平凡的,但开发者可以在用户安装的应用程序中注册新的 URL 方案。 回溯到 2017 年,Microsoft Edge 进行了此操作

microsoft-edge:// 

如果您使用它,行为是将在 Microsoft Edge 中打开 URL — 即使您选择了不同的默认浏览器。 因此,如果我作为一个博主,想要实质上强迫您使用 Edge 访问此网站,我可以通过在每个 URL 的开头都使用此 URL 方案来实现。 我不会这么做,但我可以。 微软也可以。

当时,Daniel Aleksandersen 写了一个名为 EdgeDefelector 的程序来规避这种行为并 解释

我不讨厌 Microsoft Edge — 也许您讨厌! — 但我确实相信,那些已经配置了不同默认网络浏览器的用户应该被允许继续使用该默认网络浏览器。

由于 Brave 浏览器现在支持 microsoft-edge:// URL 方案,所以此事再次引起公众关注。 显然,应用程序不仅需要注册 URL 方案,而且支持链接点击的其他应用程序也需要尊重它。 Firefox 也 正在考虑添加它。 我认为,*不支持* URL 方案的风险是,点击此类链接可能会*不执行任何操作*,而不是实际打开 URL。

很多讨论都集中在 Windows 11 上。 但在我这台 Mac 上,我看到此 URL 方案在所有这些浏览器中都能正常运行。

Safari
Chrome
Firefox
Brave

Daniel 进一步阐述

那么,我们是如何走到这一步的呢? 在 2020 年 9 月发布 iOS 14 版本之前,您无法在 iPhone 和 iPad 上更改默认网络浏览器。 谷歌在 iOS 上拥有许多应用程序,包括其 Chrome 浏览器的外壳。 为了将所有应用程序联系在一起,谷歌于 2014 年 2 月引入了 googlechrome: URL 方案。 它可以使用这些链接将您从其搜索或邮件应用程序定向到 Chrome,而不是 Apple 的 Safari 浏览器。

这是我的 iPhone 13 在安装和未安装 Google Chrome 的情况下打开 googlechrome://css-tricks.org.cn 的示例。

安装了 Google Chrome 的 iOS Safari
未安装 Google Chrome 的 iOS Safari

看起来这似乎是谷歌的过错,但实际上是 Apple 在 iOS 上允许了它。 Daniel 再次阐述

最初的错误是 Apple 的,但微软正在欣然享用苹果的成果。

我对这些事了解得还不够多,但我认为,如果我制作了与之相关的软件,我会很想拦截这些 URL 方案,并让它们在用户*当前处于*的浏览器中打开。 网络就是网络,没有任何理由任何给定的 URL *必须*在任何特定浏览器中打开。