Chrome“启动外部处理程序”控制台语句与 mailto 链接

Mar*_*arc 3 javascript google-chrome

我最近注意到 Chrome 中 console.log 中的这一行,它让我认为我在以编程方式启动链接时做错了什么mailto:

该行似乎是从https://chromium.googlesource.com/chromium/src/+/master/chrome/browser/external_protocol/external_protocol_handler.ccexternal_protocol_handler.cc文件中的 Chromium 源代码调用的

而触发console语句的具体代码为:

web_contents->GetMainFrame()->AddMessageToConsole(
      blink::mojom::ConsoleMessageLevel::kInfo,
      "Launched external handler for '" + url.possibly_invalid_spec() + "'.");
Run Code Online (Sandbox Code Playgroud)

函数名称url.possibly_invalid_spec()让我产生疑问。

我所做的就是使用 JavaScript 打开网站mailto:的链接https://(如果这与之有关)window.location.href = 'mailto:me@website.com';

有人听说过这个吗?这是新的吗?

在此输入图像描述

Via*_*nko 8

查看gitblame,我们发现该记录器是由 Eric Lawrence 于 2020 年 6 月 24 日添加的,作为bug 1096610修复的一部分,解释如下:

将外部处理程序调用记录到控制台。

以前,如果未注册协议或未满足用户手势要求,则无法调用外部协议处理程序(“foo://bar”)会默默失败。这种限制使得 Web 开发人员很难解决此类情况。当协议处理程序未注册、被禁止或在等待用户手势时被暂时阻止时,此 CL 会向开发人员工具控制台发出错误。同样,如果启动外部处理程序,则会添加信息日志条目。

http/https考虑到这一点,人们可以得出结论,在 DevTools 控制台中使用它是可以的,因为它只是一个通知,表明浏览器将尝试处理与外部协议(例如,mailtoftp等)之外的链接。