O Chrome 13 finalmente inclui navigator.registerProtocolHandler
. Essa API permite que os apps da Web se registrem como possíveis gerenciadores de protocolos específicos. Por exemplo, os usuários podem selecionar seu aplicativo para processar links "mailto".
Registre um esquema de protocolo como este:
navigator.registerProtocolHandler(
'web+mystuff', 'http://example.com/rph?q=%s', 'My App');
O primeiro parâmetro é o protocolo. O segundo é o padrão de URL do aplicativo que precisa processar esse esquema. O padrão precisa incluir um "%s" como marcador de posição para dados e estar na mesma origem do app que está tentando registrar o protocolo. Depois que o usuário aprovar o acesso, você poderá usar este link no seu app, em outros sites etc.:
<a href="web+mystuff:some+data">Open in "My App"</a>
Clicar nesse link faz uma solicitação GET
para http://example.com/rph?q=web%2Bmystuff%3A:some%20data
. Portanto, você precisa analisar o parâmetro q
e remover manualmente os dados do protocolo.
Vale ressaltar que o Firefox tem navigator.registerProtocolHandler
implementado desde o FF3. Uma diferença na implementação do Chrome é em relação aos protocolos personalizados. Elas precisam ter o prefixo "web+", como no exemplo acima. Os protocolos a seguir não precisam de um prefixo "web+": "mailto", "mms", "nntp", "rtsp", "webcal".
Confira mais informações sobre essa API no artigo da MDN.