2013-04-17 5 views
14

При доступе к Google Mail или календарю Google из Chrome в адресной строке появляется небольшой значок, позволяющий установить пользовательский обработчик услуг для схемы URI (отмечен красным квадратом на картинке).Установите обработчик сервиса для схемы URI с веб-страницы

Icon for installing custom service handler

подсказка для иконы: This page wants to install a service handler. Когда я нажимаю значок и разрешаю Google Mail обрабатывать ссылки mailto:, все ссылки mailto: открываются в Chrome.

Возможно ли создать веб-страницу, которая сможет установить пользовательский обработчик для моей настраиваемой схемы URI, как это делает Google Mail?

ответ

21

для Chrome (13+), Firefox (3.0+) и Opera (11.60+) можно зарегистрировать веб-приложение в качестве обработчика обслуживания для пользовательского схемы URI с помощью JavaScript API:

window.navigator.registerProtocolHandler(protocol, uri, title); 
  • это протокол, который сайт хочет обработать, заданный как строка.
  • uri URI для обработчика как строка. Вы можете указать «% s», чтобы указать, куда вставить экранированный URI обрабатываемого документа.
  • title - это название обработчика, представленного пользователю как строка.

Специально для Chrome существует ограничение, которое не позволяет использовать собственные схемы, которые не начинаются с префикса web+ (кроме стандартных: mailto, mms, nntp, rtsp и webcal). Так что если вы хотите зарегистрировать свой веб-приложение в качестве обработчика услуг, как сделать GMail, вы должны написать что-то вроде этого:

navigator.registerProtocolHandler("mailto", "https://www.example.com/?uri=%s", "Example Mail"); 

или

navigator.registerProtocolHandler("web+myscheme", "https://www.example.com/?uri=%s", "My Cool App"); 

Обратите внимание на URI шаблона, он должен содержать %s, которые будет заменен фактическим URI кликов пользователя ссылки. Например:

<a href="web+myscheme:some+data">Open in "My Cool App"</a> 

вызовет GET запрос на http://www.example.com/?uri=web%2Bmyscheme%3Asome%20data

Вот некоторые полезные ссылки:

+0

Это очень полезно. –