Registrazione di un gestore di protocollo personalizzato

Chrome 13 include finalmente navigator.registerProtocolHandler. Questa API consente alle app web di registrarsi come possibili gestori per determinati protocolli. Ad esempio, gli utenti potrebbero selezionare la tua applicazione per gestire i link "mailto".

Registra uno schema di protocollo come:

navigator.registerProtocolHandler(
   
'web+mystuff', 'http://example.com/rph?q=%s', 'My App');

Il primo parametro è il protocollo. Il secondo è il pattern URL dell'applicazione che deve gestire questo schema. Il pattern deve includere un "%s" come segnaposto per i dati e deve trovarsi nella stessa origine dell'app che tenta di registrare il protocollo. Una volta che l'utente avrà approvato l'accesso, potrai utilizzare questo link tramite la tua app, altri siti e così via:

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

Se fai clic sul link, viene inviata una richiesta GET a http://example.com/rph?q=web%2Bmystuff%3A:some%20data. Pertanto, devi analizzare il parametro q ed estrarre manualmente i dati dal protocollo.

Vale la pena notare che Firefox ha implementato navigator.registerProtocolHandler fin da FF3. Una differenza nell'implementazione di Chrome riguarda i protocolli personalizzati. Devono essere preceduti dal prefisso "web+", come nell'esempio riportato sopra. I seguenti protocolli non richiedono un prefisso "web+": "mailto", "mms", "nntp", "rtsp", "webcal".

Puoi trovare maggiori informazioni su questa API nell'articolo MDN.