From 778c9654d30c4337ce418e47cc5a0ab67986e7d8 Mon Sep 17 00:00:00 2001 From: mdn-bot <108879845+mdn-bot@users.noreply.github.com> Date: Tue, 20 Aug 2024 01:29:46 +0000 Subject: [PATCH 1/2] zh-cn: sync translated content --- files/zh-cn/_redirects.txt | 3 ++- files/zh-cn/_wikihistory.json | 8 ++++---- .../web/api/navigator/registerprotocolhandler}/index.md | 3 ++- 3 files changed, 8 insertions(+), 6 deletions(-) rename files/zh-cn/{web/api/navigator/registerprotocolhandler/web-based_protocol_handlers => conflicting/web/api/navigator/registerprotocolhandler}/index.md (97%) diff --git a/files/zh-cn/_redirects.txt b/files/zh-cn/_redirects.txt index 0c54d17e3181c1..8c8434878e0682 100644 --- a/files/zh-cn/_redirects.txt +++ b/files/zh-cn/_redirects.txt @@ -1325,7 +1325,7 @@ /zh-CN/docs/Updating_extensions_for_Firefox_3 /zh-CN/docs/Mozilla/Firefox/Releases/3/Updating_extensions /zh-CN/docs/Using_files_from_web_applications /zh-CN/docs/Web/API/File_API/Using_files_from_web_applications /zh-CN/docs/WOFF /zh-CN/docs/Web/CSS/CSS_fonts/WOFF -/zh-CN/docs/Web-based_protocol_handlers /zh-CN/docs/Web/API/Navigator/registerProtocolHandler/Web-based_protocol_handlers +/zh-CN/docs/Web-based_protocol_handlers /zh-CN/docs/conflicting/Web/API/Navigator/registerProtocolHandler /zh-CN/docs/Web/API/AbortSignal/abort /zh-CN/docs/Web/API/AbortSignal/abort_static /zh-CN/docs/Web/API/AbortSignal/onabort /zh-CN/docs/Web/API/AbortSignal/abort_event /zh-CN/docs/Web/API/AbortSignal/timeout /zh-CN/docs/Web/API/AbortSignal/timeout_static @@ -1674,6 +1674,7 @@ /zh-CN/docs/Web/API/Navigator.vendorSub /zh-CN/docs/Web/API/Navigator/vendorSub /zh-CN/docs/Web/API/Navigator/battery /zh-CN/docs/Web/API/Navigator/getBattery /zh-CN/docs/Web/API/Navigator/mozIsLocallyAvailable /zh-CN/docs/Web/API/Navigator +/zh-CN/docs/Web/API/Navigator/registerProtocolHandler/Web-based_protocol_handlers /zh-CN/docs/conflicting/Web/API/Navigator/registerProtocolHandler /zh-CN/docs/Web/API/NavigatorGeolocation.geolocation /zh-CN/docs/Web/API/Navigator/geolocation /zh-CN/docs/Web/API/NavigatorGeolocation/geolocation /zh-CN/docs/Web/API/Navigator/geolocation /zh-CN/docs/Web/API/Node.appendChild /zh-CN/docs/Web/API/Node/appendChild diff --git a/files/zh-cn/_wikihistory.json b/files/zh-cn/_wikihistory.json index e3d8693b45216e..40ff0ac472b3d4 100644 --- a/files/zh-cn/_wikihistory.json +++ b/files/zh-cn/_wikihistory.json @@ -11802,10 +11802,6 @@ "modified": "2020-11-12T06:22:45.529Z", "contributors": ["xgqfrms", "Carllllo", "marsoln"] }, - "Web/API/Navigator/registerProtocolHandler/Web-based_protocol_handlers": { - "modified": "2019-03-23T23:20:07.432Z", - "contributors": ["chrisdavidmills", "ObooChin", "jtyjty99999"] - }, "Web/API/Navigator/sendBeacon": { "modified": "2020-10-15T21:45:06.383Z", "contributors": [ @@ -32566,5 +32562,9 @@ "skyfore", "xgqfrms-GitHub" ] + }, + "conflicting/Web/API/Navigator/registerProtocolHandler": { + "modified": "2019-03-23T23:20:07.432Z", + "contributors": ["chrisdavidmills", "ObooChin", "jtyjty99999"] } } diff --git a/files/zh-cn/web/api/navigator/registerprotocolhandler/web-based_protocol_handlers/index.md b/files/zh-cn/conflicting/web/api/navigator/registerprotocolhandler/index.md similarity index 97% rename from files/zh-cn/web/api/navigator/registerprotocolhandler/web-based_protocol_handlers/index.md rename to files/zh-cn/conflicting/web/api/navigator/registerprotocolhandler/index.md index 056b2237379fc8..a0d5173e4582bc 100644 --- a/files/zh-cn/web/api/navigator/registerprotocolhandler/web-based_protocol_handlers/index.md +++ b/files/zh-cn/conflicting/web/api/navigator/registerprotocolhandler/index.md @@ -1,6 +1,7 @@ --- title: Web-based protocol handlers -slug: Web/API/Navigator/registerProtocolHandler/Web-based_protocol_handlers +slug: conflicting/Web/API/Navigator/registerProtocolHandler +original_slug: Web/API/Navigator/registerProtocolHandler/Web-based_protocol_handlers --- ## 背景 From 6f495bef29c66adb091eca27cceef00a4ba8a30f Mon Sep 17 00:00:00 2001 From: Allo Date: Tue, 20 Aug 2024 20:06:58 +0800 Subject: [PATCH 2/2] fold relevant content into API method page --- files/zh-cn/_redirects.txt | 4 +- files/zh-cn/_wikihistory.json | 4 - .../registerprotocolhandler/index.md | 132 --------------- .../zh-cn/mozilla/firefox/releases/3/index.md | 4 +- .../registerprotocolhandler/index.md | 160 ++++++++++-------- 5 files changed, 93 insertions(+), 211 deletions(-) delete mode 100644 files/zh-cn/conflicting/web/api/navigator/registerprotocolhandler/index.md diff --git a/files/zh-cn/_redirects.txt b/files/zh-cn/_redirects.txt index 8c8434878e0682..614b439ae517cf 100644 --- a/files/zh-cn/_redirects.txt +++ b/files/zh-cn/_redirects.txt @@ -1325,7 +1325,7 @@ /zh-CN/docs/Updating_extensions_for_Firefox_3 /zh-CN/docs/Mozilla/Firefox/Releases/3/Updating_extensions /zh-CN/docs/Using_files_from_web_applications /zh-CN/docs/Web/API/File_API/Using_files_from_web_applications /zh-CN/docs/WOFF /zh-CN/docs/Web/CSS/CSS_fonts/WOFF -/zh-CN/docs/Web-based_protocol_handlers /zh-CN/docs/conflicting/Web/API/Navigator/registerProtocolHandler +/zh-CN/docs/Web-based_protocol_handlers /zh-CN/docs/Web/API/Navigator/registerProtocolHandler /zh-CN/docs/Web/API/AbortSignal/abort /zh-CN/docs/Web/API/AbortSignal/abort_static /zh-CN/docs/Web/API/AbortSignal/onabort /zh-CN/docs/Web/API/AbortSignal/abort_event /zh-CN/docs/Web/API/AbortSignal/timeout /zh-CN/docs/Web/API/AbortSignal/timeout_static @@ -1674,7 +1674,7 @@ /zh-CN/docs/Web/API/Navigator.vendorSub /zh-CN/docs/Web/API/Navigator/vendorSub /zh-CN/docs/Web/API/Navigator/battery /zh-CN/docs/Web/API/Navigator/getBattery /zh-CN/docs/Web/API/Navigator/mozIsLocallyAvailable /zh-CN/docs/Web/API/Navigator -/zh-CN/docs/Web/API/Navigator/registerProtocolHandler/Web-based_protocol_handlers /zh-CN/docs/conflicting/Web/API/Navigator/registerProtocolHandler +/zh-CN/docs/Web/API/Navigator/registerProtocolHandler/Web-based_protocol_handlers /zh-CN/docs/Web/API/Navigator/registerProtocolHandler /zh-CN/docs/Web/API/NavigatorGeolocation.geolocation /zh-CN/docs/Web/API/Navigator/geolocation /zh-CN/docs/Web/API/NavigatorGeolocation/geolocation /zh-CN/docs/Web/API/Navigator/geolocation /zh-CN/docs/Web/API/Node.appendChild /zh-CN/docs/Web/API/Node/appendChild diff --git a/files/zh-cn/_wikihistory.json b/files/zh-cn/_wikihistory.json index 40ff0ac472b3d4..5a5cb7fd2679d1 100644 --- a/files/zh-cn/_wikihistory.json +++ b/files/zh-cn/_wikihistory.json @@ -32562,9 +32562,5 @@ "skyfore", "xgqfrms-GitHub" ] - }, - "conflicting/Web/API/Navigator/registerProtocolHandler": { - "modified": "2019-03-23T23:20:07.432Z", - "contributors": ["chrisdavidmills", "ObooChin", "jtyjty99999"] } } diff --git a/files/zh-cn/conflicting/web/api/navigator/registerprotocolhandler/index.md b/files/zh-cn/conflicting/web/api/navigator/registerprotocolhandler/index.md deleted file mode 100644 index a0d5173e4582bc..00000000000000 --- a/files/zh-cn/conflicting/web/api/navigator/registerprotocolhandler/index.md +++ /dev/null @@ -1,132 +0,0 @@ ---- -title: Web-based protocol handlers -slug: conflicting/Web/API/Navigator/registerProtocolHandler -original_slug: Web/API/Navigator/registerProtocolHandler/Web-based_protocol_handlers ---- - -## 背景 - -利用非 HTTP 协议,从网页链接到一些别的资源,这种做法是相当普遍的。比如 `mailto:` 协议: - -```html -Web Master -``` - -当 Web 页面作者想直接从网页上,为用户提供一个方便的方式发送一个电子邮件,时可以使用 `mailto:` 链接。激活链接时,浏览器应该启动默认的桌面应用程序来处理电子邮件。你可以认为这是一个*基于桌面的*协议处理器。 - -基于网络的协议处理程序也允许基于 Web 的应用程序参与这一过程。随着越来越多的类型的应用程序迁移到 Web,这变得越来越重要。事实上,有许多基于 Web 的电子邮件处理的应用程序可以处理一个 mailto 链接。 - -## 注册 - -设置一个 Web 应用程序作为一个协议处理器不是一个很麻烦的过程。Web 应用程序可以使用 [registerProtocolHandler()](/zh-CN/docs/Web/API/navigator.registerProtocolHandler) 注册到浏览器上,从而对于一个给定的协议来讲,作为一个潜在的处理程序。例如: - -```js -navigator.registerProtocolHandler( - "mailto", - "https://www.example.com/?uri=%s", - "Example Mail", -); -``` - -参数为: - -- 协议名称。 -- URL 模板。%s 用来替换链接的 `href` 属性,之后通过这个 URL 来发起一个 GET 请求。 -- 一个对用户友好的协议处理器的名字。 - -当一个浏览器执行这段代码时,它应该向用户显示一个请求,让用户许可为处理这个协议而注册一个 Web 应用程序的请求。Firefox 在通知栏区域显示一个提示: - -![Screenshot of a prompt that reads: Add Burger handler (google.co.uk) as an application for burger links. An Add Application button is next to the text.](protocolregister.png) - -> [!NOTE] -> 试图执行登记或注册时,当前网页必须与提供的 URL 模板在相同的域,否则将会失败。例如,`http://example.com/homepage.html` 可以为 `http://example.com/handle_mailto/%s` 注册一个协议处理程序,但 `http://example.org/handle_mailto/%s` 不可以。 - -多次注册相同的协议处理程序会弹出不同的通知,表明协议处理器已经注册。因此,发起一个注册协议处理程序的请求,之后检查是否注册是一个很好的方法。比如下面的例子: - -### 例子 - -```js - - - - Web Protocol Handler Sample - Register - - - -

Web Protocol Handler Sample

-

This web page will install a web protocol handler for the fake: protocol.

- - -``` - -## 激活 - -现在,只要用户点击链接,使用注册协议,浏览器将跳转到 Web 应用程序注册时提供的 URL。Firefox 在默认情况下,跳转前会提示用户操作。 - -### Example - -```html - - - - Web Protocol Handler Sample - Test - - -

Hey have you seen this before?

- - -``` - -## 处理 - -下一步是处理这个动作。浏览器在激活的链接中提取出 href 属性,之后与注册时提供的 URL 模板进行拼装,之后经由拼装好的 URL 发起一个 HTTP GET 请求。因此下面的例子中,浏览器会基于此 URL 发起一个 GET 请求: - -``` -http://starkravingfinkle.org/projects/wph/handler.php?value=fake:this%20is%20fake -``` - -服务端代码可以提取查询字符串的参数,执行所需的操作。 - -> [!NOTE] -> 服务端代码会接收到 href 的**全部**内容。这意味着服务端代码必须解析出数据中的协议。 - -### Example - -```php - - - - - - Web Protocol Handler Sample - - -

Web Protocol Handler Sample - Handler

-

This web page is called when handling a fake: protocol action. The data sent:

- - - -``` - -## 参考 - -- - -## See also - -- [window.navigator.registerContentHandler](/zh-CN/docs/DOM/window.navigator.registerContentHandler) -- [nsIProtocolHandler](/zh-CN/docs/XPCOM_Interface_Reference/nsIProtocolHandler) (XUL only) -- [RegisterProtocolHandler Enhancing the Federated Web](http://blog.mozilla.com/webdev/2010/07/26/registerprotocolhandler-enhancing-the-federated-web/) at Mozilla Webdev -- [Register a custom protocolHandler](https://developers.google.com/web/updates/2011/06/Registering-a-custom-protocol-handler) at Google Developers. diff --git a/files/zh-cn/mozilla/firefox/releases/3/index.md b/files/zh-cn/mozilla/firefox/releases/3/index.md index 8299262fafa879..6b2470a003f5de 100644 --- a/files/zh-cn/mozilla/firefox/releases/3/index.md +++ b/files/zh-cn/mozilla/firefox/releases/3/index.md @@ -17,11 +17,11 @@ l10n: - : 提供了有关你可能需要对网站或 web 应用进行的更改以便利用 Firefox 3 中的新特性的信息。 - [上线与离线事件](/zh-CN/docs/Web/API/Navigator/onLine) - : Firefox 3 支持 WHATWG 的上线与离线事件,其允许应用程序和扩展检测当前是否有可用的互联网连接,以及何时上线和下线。 -- [基于 web 的协议处理](/zh-CN/docs/Web/API/Navigator/registerProtocolHandler/Web-based_protocol_handlers) +- [基于 web 的协议处理](/zh-CN/docs/Web/API/Navigator/registerProtocolHandler) - : 你现在可以使用 `navigator.registerProtocolHandler()` 方法将 web 应用注册为特定协议的处理器。 - [在画布中绘制文本](/zh-CN/docs/Web/API/Canvas_API/Tutorial/Drawing_text) - : 你可以使用 Firefox 3 支持的非标准 API 在 canvas 上绘制文本。 -- [支持画布变换](/zh-CN/docs/Web/API/Canvas_API/Tutorial/Transformations#变形_transforms) +- [支持画布变换](/zh-CN/docs/Web/API/Canvas_API/Tutorial/Transformations#变形) - : Firefox 现在支持 canvas 的 `transform()` 和 `setTransform()` 方法。 - [使用微格式](/zh-CN/docs/Web/HTML/microformats) - : Firefox 现在有一组用于微格式的 API。 diff --git a/files/zh-cn/web/api/navigator/registerprotocolhandler/index.md b/files/zh-cn/web/api/navigator/registerprotocolhandler/index.md index aba10c2bd122bb..35796566c9f1b2 100644 --- a/files/zh-cn/web/api/navigator/registerprotocolhandler/index.md +++ b/files/zh-cn/web/api/navigator/registerprotocolhandler/index.md @@ -1,102 +1,128 @@ --- -title: Navigator.registerProtocolHandler() +title: Navigator:registerProtocolHandler() 方法 slug: Web/API/Navigator/registerProtocolHandler +l10n: + sourceCommit: f98675af9d0a80f33d7875c48cfdb41f71ed1de9 --- {{APIRef("HTML DOM")}}{{securecontext_header}} -**{{domxref("Navigator")}}** 的方法 **`registerProtocolHandler()`** 让 web 站点为自身注册用于打开或处理特定 URL 方案(又名协议)的能力。 +**{{domxref("Navigator")}}** 的 **`registerProtocolHandler()`** 方法让 web 站点为自身注册用于打开或处理特定 URL 方案(又名协议)的能力。 举个例子,此 API 允许 Web 邮件站点打开 `mailto:` URL,或让 VoIP 站点打开 `tel:` URL。 +要注册协议处理器,网站在调用 `registerProtocolHandler()` 时传入要注册的协议和模板 URL。 + +在用户激活使用来注册的协议的链接时,浏览器会将激活链接的 [`href`](/zh-CN/docs/Web/HTML/Element/a#href) 插入到处理器注册时提供的 URL 模板中,并将当前页面导航到生成的 URL。 + +浏览器可能会要求用户确认是否允许页面处理该协议,无论是在注册协议时还是在用户激活链接时。 + ## 语法 -``` -navigator.registerProtocolHandler(scheme, url, title); +```js-nolint +registerProtocolHandler(scheme, url) ``` -> [!NOTE] -> 最近更新为 `navigator.registerProtocolHandler(scheme, url)`, 但目前没有浏览器支持该版本。 - ### 参数 - `scheme` - - : 一个包含站点希望处理的协议的字符串。例如,你可以通过传入 `"sms"` 来注册处理 SMS 文本信息链接。 -- `url` - - : 处理器的 URL,string 类型。这个字符串应该包含一个"%s"的占位符,其会被将要受理的文档的 [escaped](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent) 链接所替换。这个链接(译者按:指将要受理的文档的 escaped 链接,也就是替换占位符的字符串)可能是一个真实的 URL,或者是一个电话号码,邮件地址之类的。 + - : 一个包含站点希望处理的协议的方案字符串。 + + 其可能是一个自定义方案,此时方案的名称: + + - 以 `web+` 开始 + - 在 `web+` 前缀之后至少包含一个字母 + - 仅包含小写的 {{Glossary("ASCII")}} 字母。 + + 否则,方案必须是以下值之一: + + - `bitcoin` + - `ftp` + - `ftps` + - `geo` + - `im` + - `irc` + - `ircs` + - `magnet` + - `mailto` + - `matrix` + - `mms` + - `news` + - `nntp` + - `openpgp4fpr` + - `sftp` + - `sip` + - `sms` + - `smsto` + - `ssh` + - `tel` + - `urn` + - `webcal` + - `wtai` + - `xmpp` + +- `url` - > [!NOTE] - > 这个处理器的 URL 必须以 `http` 或者 `https` 协议标记作为开头,最好是 `https` ,以满足一些浏览器出于安全考虑的要求。 + - : 一个包含处理器 URL 的字符串。该 URL 必须包含 `%s`(作为占位符),其会被将要处理且[经过转义的](/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent) URL 所替换。 -- `title` {{Deprecated_Inline}} + 处理器 URL 必须使用 `https` 方案,并且必须与尝试注册处理器的网页具有相同的{{glossary("origin", "来源")}}。 - - : 一个用户可理解的处理器标题。标题会展示给用户,例如弹出对话框“允许这个站点处理 \[scheme] 链接吗?”或者在浏览器设置中列出注册的处理器时。 +### 返回值 - > [!NOTE] - > 出于欺骗的考虑,标题已从规范中删除,但当前所有的浏览器仍要求使用该标题。建议始终设置标题,因为支持更新规范的浏览器很可能会向后兼容,并且仍接受标题(但不使用它)。 +无({{jsxref("undefined")}})。 ### 异常 -- 指定了一个非法的协议标记,例如一个浏览器自身的标记(`https:`, `about:` 等)。 -- 处理器 URL 的 [origin](/zh-CN/docs/Glossary/Origin) 与调用这个 API 的页面的 origin 不匹配。 -- 浏览器要求这个函数由安全的上下文调用。 -- 浏览器要求处理器的 URL 使用 HTTPS 协议。 - -- `SecurityError` - - : 用户代理阻止了处理器的注册。这可能是由于: -- `SyntaxError` - - : 在指定的协议处理地址的字符串中缺失了 `%s` 占位符。 - -## 允许的协议标记 - -出于安全考虑,`registerProtocolHandler()` 严格限制了允许注册的协议标记。以 `web+` 作为前缀的方式可以注册一个自定义的标记协议,至少要有 5 个字符的长度 (包括 `web+` 前缀),而且只能使用小写的 ASCII 字母作为名称。例如 `web+burger` ,如下面的[示例](#示例)所示。 - -除此之外,还可以使用下文所列的白名单中的协议标记: - -- `bitcoin` -- `geo` -- `im` -- `irc` -- `ircs` -- `magnet` -- `mailto` -- `mms` -- `news` -- `nntp` -- `openpgp4fpr` -- `sip` -- `sms` -- `smsto` -- `ssh` -- `tel` -- `urn` -- `webcal` -- `wtai` -- `xmpp` +- `SecurityError` {{domxref("DOMException")}} + + - : 用户代理阻止了注册。这可能是由于: + + - 注册方案(协议)无效,例如是浏览器自身所处理的方案(`https:`、`about:` 等)。 + - 处理器 URL 的{{Glossary("origin", "来源")}}与调用该 API 的页面的来源不匹配。 + - 处理器 URL 的方案不是 `https`。 + +- `SyntaxError` {{domxref("DOMException")}} + - : 处理器 URL 中缺失占位符 `%s`。 ## 示例 -如果你的网站是 `https://www.google.com/`,则可以为其注册一个协议处理程序来处理 `web+burger:`链接,如下所示: +### 为 mailto 协议注册处理器 + +网页使用非 `https` 协议来链接资源是非常常见的。例如,`mailto:` 协议。当 Web 作者想要为用户提供一个直接通过网页发送电子邮件的便捷方式时,可以使用 `mailto` 链接: + +```html +Web 管理员 +``` + +当链接被激活时,浏览器应该启动默认的桌面应用程序来处理电子邮件。你可以认为这是一个*基于桌面平台*协议处理器。 + +基于 Web 的协议处理器允许基于 Web 的应用程序参与这一过程。例如,`mail.example.org` 上的电子邮件 Web 应用程序可以使用以下代码注册来处理 `mailto` 链接: + +```js +navigator.registerProtocolHandler("mailto", "https://mail.example.org/?to=%s"); +``` + +此后,当用户点击网站上的 `mailto` 链接时,浏览器将(可能要求浏览器进行确认)导航到 `https://mail.example.org/?to=mailto:webmaster@example.com`。此页面可以解析 URL 参数来提取地址,并使用此地址来初始化电子邮件。 + +### 为自定义协议注册处理器 + +在这个示例中,页面使用以下代码来注册 `web+burger` 协议的处理器: ```js navigator.registerProtocolHandler( "web+burger", - "https://www.google.com/?uri=%s", - "Burger handler", + "https://burgers.example.org/?burger=%s", ); ``` -这将创建一个处理程序,该处理程序允许使用 `web+burger:` 链接将用户发送到你的网站,并将访问的 Burger URL 插入`%s`占位符。 - -该脚本必须从与处理程序 URL 相同的源运行(因此, `https://www.google.com/`上的任何页面),并且处理程序 URL 必须为 `http`或 `https`。 - -将通知用户你的代码要求注册协议处理程序,以便他们可以决定是否允许它。有关 `https://www.google.com/`上的示例,请参见以下屏幕截图: +随后,用户访问包含如下链接的页面: -![](protocolregister.png) +```html +芝士汉堡 +``` -> [!NOTE] -> "[Register a webmail service as mailto handler](/zh-CN/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebContentHandlerRegistrar#Getting_most_recent_window)" 展示了如何从跨平台组件对象模块 (XPCOM) 中做到这一切。 +如果用户激活了 `web+burger` 链接,浏览器将(可能要求浏览器进行确认)导航到 `https://burgers.example.org/?burger=web+burger:cheeseburger`。 ## 规范 @@ -105,11 +131,3 @@ navigator.registerProtocolHandler( ## 浏览器兼容性 {{Compat}} - -## 参见 - -- [Web-based protocol handlers](/zh-CN/docs/Web-based_protocol_handlers) -- [RegisterProtocolHandler Enhancing the Federated Web](http://blog.mozilla.com/webdev/2010/07/26/registerprotocolhandler-enhancing-the-federated-web/) at Mozilla Webdev -- [Web Application APIs - Custom scheme and content handlers - Whitelisted schemes](http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#whitelisted-scheme) -- [Register a webmail service as mailto handler](/zh-CN/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebContentHandlerRegistrar#Getting_most_recent_window) shows how to do `registerProtocolHandler` from XPCOM scope. -- [XPCOM Interface Reference > nsIWebContentHandlerRegistrar > registerContentHandler](/zh-CN/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebContentHandlerRegistrar#registerProtocolHandler) - This shows how to use this function XPCOM scope