navigator.registerProtocolHandler()

navigator.registerProtocolHandler() - реєстрація обробника для вказаного протоколу.

Синтаксис:

window.navigator.registerProtocolHandler(protocol, uri, title);

Параметри:

window - не обов'язково вказувати. Об'єкт window.

navigator - об'єкт navigator.

protocol - рядок який містить назву протоколу.

uri - рядок з вказаним URI. "% S" підрядок буде замінена вмістом.

title - рядок з заголовком для обробника.

Опис:

registerProtocolHandler() метод об'єкту navigate який  реєструє веб-сайт в якості можливого обробника для вказаного протоколу.

Зверніть увагу що у деяких браузерах через обмеження безпеки, тільки ті веб-сайти можуть бути зареєстровані у яких обробник контенту знаходяться в тому ж домені, що сторінка яка подається.

З міркувань безпеки,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');