2013-04-17 8 views
14

Beim Zugriff auf Google Mail oder Google Kalender in Chrome wird ein kleines Symbol in der Adressleiste angezeigt, mit dem benutzerdefinierte Service-Handler für URI-Schemas installiert werden können (im Bild mit rotem Quadrat markiert).Installieren eines Service-Handlers für URI-Schema von der Webseite

Icon for installing custom service handler

Tooltip für Symbol ist: This page wants to install a service handler. Wenn ich auf das Symbol klicke und Google Mail die Verwendung von mailto: Links zuweist, werden alle mailto: Links in Chrome geöffnet.

Ist es möglich, eine Webseite zu erstellen, die benutzerdefinierte Handler für mein benutzerdefiniertes URI-Schema wie Google Mail installieren kann?

Antwort

21

Für Chrome (13+), Firefox (3.0 oder höher) und Opera (11.60+) ist es möglich, Web-Anwendung als Service-Handler für benutzerdefinierte URI-Schema mit Hilfe von JavaScript-API registrieren:

window.navigator.registerProtocolHandler(protocol, uri, title); 
  • ist das Protokoll, das die Site handhaben möchte, spezifiziert als eine Zeichenkette.
  • uri ist die URI zum Handler als Zeichenfolge. Sie können "% s" einfügen, um anzugeben, wo der maskierte URI des zu bearbeitenden Dokuments eingefügt werden soll.
  • title ist der Titel des Handlers, der dem Benutzer als Zeichenfolge angezeigt wird.

Speziell für Chrome gibt es eine Einschränkung, die nicht nicht mit web+ Präfix beginnen erlaubt benutzerdefinierte Schemata zu verwenden, die (mit Ausnahme von Standard diejenigen: mailto, mms, nntp, rtsp und webcal). Also, wenn Sie Ihre Web-App als Service-Handler registrieren möchten, wie GMail tun, können Sie so etwas schreiben sollte:

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

oder

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

beachten, sie enthalten müssen %s die wird durch den tatsächlichen URI der Link-Benutzerklicks ersetzt. Zum Beispiel:

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

auslösen GET Anfrage http://www.example.com/?uri=web%2Bmyscheme%3Asome%20data

Hier sind einige nützliche Links:

+0

Das ist sehr nützlich. –