Метод Navigator: registerProtocolHandler()
Ограниченная доступность
Эта функция не является базовой, так как она не работает во всех широко используемых браузерах.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в поддерживающих браузерах (или частично).
Метод Navigator позволяет веб-сайтам регистрировать возможность открытия или обработки определённых схем URL (также называемых протоколами).
Например, этот API позволяет веб-почте открывать mailto: URL-адреса, а VoIP-сайтам — tel: URL-адреса.
Для регистрации обработчика протокола веб-сайт вызывает registerProtocolHandler(), передавая в него регистрируемый протокол и шаблон URL.
При активации ссылки, использующей зарегистрированный протокол, браузер вставит href из активированной ссылки в шаблон URL, предоставленный во время регистрации обработчика, и перенаправит текущую страницу на полученный URL.
Браузер может попросить пользователя подтвердить, что он хочет разрешить странице обрабатывать протокол, либо при регистрации протокола, либо при активации ссылки.
Синтаксис
registerProtocolHandler(scheme, url)
Параметры
scheme-
Строка, содержащая схему протокола, который сайт хочет обрабатывать.
Это может быть пользовательская схема, в этом случае имя схемы:
- Начинается с
web+ - Содержит по крайней мере одну букву после префикса
web+ - Содержит только строчные буквы ASCII.
В противном случае схема должна быть одной из следующих:
bitcoinftpftpsgeoimircircsmagnetmailtomatrixmmsnewsnntpopenpgp4fprsftpsipsmssmstosshtelurnwebcalwtaixmpp
- Начинается с
url-
Строка, содержащая URL обработчика. Этот URL должен включать
%s, как заполнитель, который будет заменён на экранированный URL для обработки.URL обработчика должен использовать схему
httpsи иметь тот же происхождение, что и веб-страница, которая пытается зарегистрировать обработчик.
Значение результата
None (undefined).
Исключения
-
SecurityErrorDOMException -
Регистрация заблокирована браузером. Это может произойти, если:
- Зарегистрированная схема (протокол) некорректна, например, схема, которая сама обрабатывается браузером (
https:,about:, и т.д.) - Происхождение URL обработчика не соответствует происхождению страницы, вызывающей этот API.
- Схема URL обработчика не
https.
- Зарегистрированная схема (протокол) некорректна, например, схема, которая сама обрабатывается браузером (
-
SyntaxErrorDOMException -
Отсутствует заполнитель
%sв URL обработчика.
Примеры
Регистрация обработчика для протокола mailto
Веб-страницы часто содержат ссылки на ресурсы с использованием не-https протоколов. Примером является протокол mailto:. Авторы веб-страниц могут использовать mailto ссылку, когда им нужно предоставить удобный способ отправки электронного письма напрямую с веб-страницы:
<a href="mailto:webmaster@example.com">Web Master</a>
При активации ссылки браузер должен запустить стандартное приложение для обработки электронной почты. Это можно рассматривать как обработчик протокола на уровне операционной системы.
Веб-обработчики протоколов позволяют веб-приложениям также участвовать в этом процессе. Веб-приложение электронной почты по адресу mail.example.org может зарегистрировать обработчик mailto с помощью такого кода:
navigator.registerProtocolHandler("mailto", "https://mail.example.org/?to=%s");
После этого, когда пользователь щелкнет по mailto ссылке на любом сайте, браузер (возможно, после запроса подтверждения) перейдёт на https://mail.example.org/?to=mailto:webmaster@example.com. Эта страница может проанализировать параметр URL для извлечения адреса и использовать его для инициализации электронной почты.
Регистрация обработчика для пользовательского протокола
В этом примере страница регистрирует обработчик для протокола web+burger с помощью такого кода:
navigator.registerProtocolHandler( "web+burger", "https://burgers.example.org/?burger=%s", );
Впоследствии пользователь посещает страницу, содержащую ссылку:
<a href="web+burger:cheeseburger">cheeseburger</a>
Если пользователь активирует ссылку web+burger, браузер перейдёт (возможно, после запроса подтверждения) на https://burgers.example.org/?burger=web+burger:cheeseburger.
Спецификации
| Спецификация |
|---|
| HTML # custom-handlers |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
registerProtocolHandler |
13Начиная с Chrome 77, параметр URL принимает только URL-адресаhttp или https. |
79 | 2 | 11.6 | No | No | 4 | No | No | No | No |
|---|---|---|---|---|---|---|---|---|---|---|---|
scheme_parameter_bitcoin |
28 | 79 | 2 | 15 | No | No | 4 | No | No | No | No |
scheme_parameter_cabal |
86 | 86 | No | 72 | No | No | No | No | No | No | No |
scheme_parameter_dat |
86 | 86 | No | 72 | No | No | No | No | No | No | No |
scheme_parameter_did |
86 | 86 | No | 72 | No | No | No | No | No | No | No |
scheme_parameter_dweb |
86 | 86 | No | 72 | No | No | No | No | No | No | No |
scheme_parameter_ethereum |
86 | 86 | No | 72 | No | No | No | No | No | No | No |
scheme_parameter_ftp |
No | No | 98 | No | No | No | 98 | No | No | No | No |
scheme_parameter_ftps |
No | No | 98 | No | No | No | 98 | No | No | No | No |
scheme_parameter_geo |
30 | 79 | 2 | 17 | No | No | 4 | No | No | No | No |
scheme_parameter_hyper |
86 | 86 | No | 72 | No | No | No | No | No | No | No |
scheme_parameter_im |
30 | 79 | 2 | 17 | No | No | 4 | No | No | No | No |
scheme_parameter_ipfs |
86 | 86 | No | 72 | No | No | No | No | No | No | No |
scheme_parameter_ipns |
86 | 86 | No | 72 | No | No | No | No | No | No | No |
scheme_parameter_irc |
15 | 79 | 2 | 11.6 | No | No | 4 | No | No | No | No |
scheme_parameter_ircs |
30 | 79 | 2 | 17 | No | No | 4 | No | No | No | No |
scheme_parameter_magnet |
30 | 79 | 2 | 17 | No | No | 4 | No | No | No | No |
scheme_parameter_mailto |
13 | 79 | 2 | 11.6 | No | No | 4 | No | No | No | No |
scheme_parameter_matrix |
92 | 92 | 90 | 78 | No | No | 90 | No | No | No | No |
scheme_parameter_mms |
13 | 79 | 2 | 11.6 | No | No | 4 | No | No | No | No |
scheme_parameter_news |
13 | 79 | 2 | 11.6 | No | No | 4 | No | No | No | No |
scheme_parameter_nntp |
13 | 79 | 2 | 11.6 | No | No | 4 | No | No | No | No |
scheme_parameter_openpgp4fpr |
42 | 79 | 2 | 29 | No | No | 4 | No | No | No | No |
scheme_parameter_sftp |
No | No | 98 | No | No | No | 98 | No | No | No | No |
scheme_parameter_sip |
30 | 79 | 2 | 17 | No | No | 4 | No | No | No | No |
scheme_parameter_sms |
13 | 79 | 2 | 11.6 | No | No | 4 | No | No | No | No |
scheme_parameter_smsto |
26 | 79 | 2 | 15 | No | No | 4 | No | No | No | No |
scheme_parameter_ssb |
86 | 86 | Нет | 72 | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
|---|---|---|---|---|---|---|---|---|---|---|---|
scheme_parameter_ssh |
41 | 79 | 2 | 28 | Нет | Нет | 4 | Нет | Нет | Нет | Нет |
scheme_parameter_tel |
13 | 79 | 2 | 11.6 | Нет | Нет | 4 | Нет | Нет | Нет | Нет |
scheme_parameter_urn |
13 | 79 | 2 | 11.6 | Нет | Нет | 4 | Нет | Нет | Нет | Нет |
scheme_parameter_webcal |
13 | 79 | 2 | 11.6 | Нет | Нет | 4 | Нет | Нет | Нет | Нет |
scheme_parameter_wtai |
31 | 79 | 2 | 18 | Нет | Нет | 4 | Нет | Нет | Нет | Нет |
scheme_parameter_xmpp |
30 | 79 | 2 | 17 | Нет | Нет | 4 | Нет | Нет | Нет | Нет |
secure_context_required |
80 | 79 | 62 | 67 | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Navigator/registerProtocolHandler