navigator.registerProtocolHandler() - реєстрація обробника для вказаного протоколу.
window.navigator.registerProtocolHandler(protocol, uri, title);
window - не обов'язково вказувати. Об'єкт window.
navigator - об'єкт navigator.
protocol - рядок який містить назву протоколу.
uri - рядок з вказаним URI. "% S" підрядок буде замінена вмістом.
title - рядок з заголовком для обробника.
registerProtocolHandler() метод об'єкту navigator який реєструє веб-сайт в якості можливого обробника для вказаного протоколу.
Зверніть увагу що у деяких браузерах через обмеження безпеки, тільки ті веб-сайти можуть бути зареєстровані у яких обробник контенту знаходяться в тому ж домені, що сторінка яка подається.
З міркувань безпеки,registerProtocolHandler() має обмеження , на які можуть бути зареєстровані протоколи. Назва протоколу починатися з "web+" і мати тільки малі літери ASCII в назві. Наприклад: "web+burger"
В іншому випадку є дозволені білі протоколи.
У браузері в настройка можна змінювати обробку протокола. Вікно настройки обробників протоколів в браузері Opera 49.0:
if(navigator.registerProtocolHandler)
navigator.registerProtocolHandler("web+burger", "http://яваскрипт.укр/?uri=%s", "Burger handler");
else alert('Ваш браузер не підтримує navigator.registerProtocolHandler');
<a href="web+burget:test">test</a>
тест
Якщо вказати адресу іншого сайту то можливо з міркувань безпеки браузера виникне помилка:
if(navigator.registerProtocolHandler)
navigator.registerProtocolHandler ("mailto", "http://www.google.com.ua/?uri=%s", "Mailto protocol handler"); //SecurityError: Permission denied to add http://www.google.com.ua/?uri=%s as a content or protocol handler
else alert('Ваш браузер не підтримує navigator.registerProtocolHandler');