Ich habe in den letzten Monaten eine Menge über Web Intents gelesen und ich finde immer noch dass der Webmonkey die Thematik bisher am treffendsten beschrieben hat:
In practice Web Intents work a bit like
mailto:
links, defining an action and then passing it along to the browser, which allows the user to choose how to handle the action. The difference is that instead of opening a desktop app, Web Intents connect to web services.
Der Vergleich ist simple und ich habe mir die Frage gestellt: Wieso nicht einfach wirklich unterschiedliche Schemes für die jeweiligen Anforderungen definieren? Eine App kann beim Browser anmelden dass sie share://
oder subscribe://
unterstützt und bei einem Klick auf einen entsprechenden Link, öffnet sich (statt der E-Mail App) eben die entsprechende Web-App.
…vor kurzem hab ich dann mal ein wenig mit Superfeedrs msgboy herumgespielt und entdeckt dass es bei HTML5 wirklich Custom-Schemes gibt die man frei definieren kann!
Mit folgendem Befehl kann man beim Browser einen eigenen Protocol-Handler setzen:
navigator.registerProtocolHandler('web+share', 'http://spread.ly/?url=%s', 'Spread.ly');
Code-Sprache: JavaScript (javascript)
Alle neuen Schemes sollten mit "web+
" beginnen, ausnahmen sind schon bestehende Schemes, wie z.B. "mailto
", "mms
", "nntp
", "rtsp
" oder "webcal
".
Der passende a-Tag zum oben genannten Beispiel müsste also folgendermaßen aussehen:
<a href="web+share:http://pfefferle.org">Share this Page</a>
Code-Sprache: HTML, XML (xml)
Klickt ein User den Link, wird einfach das %s
vom Handler mit dem href
ersetzt und aufgerufen:
http://spread.ly/?url=web+share:http://pfefferle.org
Code-Sprache: JavaScript (javascript)
Bisher war ich ja ein großer Web Intents Fan (und bin es auch immer noch), aber für solche simplen Aktionen wie "Share", "Like", "Subscribe" oder "Follow" reicht doch ein simples Custom-Scheme vollkommen aus. Kein unnötiges JavaScript (mal abgesehen vom Registrieren des Handlers), nur ein wenig HTML. Großartig!
Protocol-Handler lassen sich übrigens auch abhängig vom Mime-Type setzen:
navigator.registerContentHandler('application/atom+xml', 'http://www.google.com/ig/add?feedurl=%s', 'Google Reader')
Code-Sprache: JavaScript (javascript)
Bei allen Web-Dokumenten mit dem Mime-Type application/atom+xml
sollte der Browser jetzt nachfragen ob er die URL mit dem Google-Reader öffnen soll.