Přejít k navigační liště

Zdroják » Webdesign » Použijte v aplikaci vlastní protokol

Použijte v aplikaci vlastní protokol

Články Webdesign

Většina webdesignerů zná uživatelské protokoly – nebo minimálně jednoho jejich zástupce, protokol „mailto:“. Ten lze použít v odkazech, které po kliknutí otevřou mailový program. Ale co když tím mailovým programem má být webová aplikace? Lze to nějak zařídit? A lze zařídit i jiné protokoly?

Prohlížeče umí zpracovat (detaily naleznete v nastavení) nejrůznější typy obsahu (podle MIME typu) a různé protokoly (mailto:, ftp:, mms: atd.) Buď ví, jak s nimi naložit, nebo má registrované obslužné aplikace, kterým předá potřebné parametry. S rostoucím počtem webových aplikací se stále častěji objevují situace, kdy by bylo vhodné jako obslužné programy nastavit právě některou webovou aplikaci – kupříkladu Hotmail nebo GMail jako obsluhu pro odkazy „mailto:“

Prohlížeč Opera nabízí možnost nastavit takové aplikace pro „mailto“ pomocí konfiguračního souboru webmailprovider­s.ini.

Návrh HTML5 od WhatWG obsahuje tzv. Custom Handlers, neboli uživatelské „ovladače“. Jsou určeny pro zpracování speciálních protokolů (lépe řečeno schémat) a typů obsahu (Content-Type). Návrh zavádí dvě nové metody objektu  navigator:

  • registerProto­colHandler(sché­ma, URL, název)
  • registerConten­tHandler(MIME, URL, název)

Tyto funkce slouží k registraci ovladače vlastního protokolu, resp. MIME typu. Parametr název pojmenovává protokol / MIME typ, parametr URL udává adresu, na které webová aplikace takový požadavek obslouží. U registrace protokolu je schéma název schématu (mailto, ftp, mms atd.), u registrace ovladače pro obsah je prvním parametrem MIME typ, kterého se má ovladač týkat.

Příklad

navigator.registerProtocolHandler("mailto", "http://example.com/mail.php?q=%s", "Můj mail");

Toto volání zaregistruje ovladač pro protokol mailto. Pokud uživatel klikne na nějaké stránce na  odkaz s mailto, např.:

<a href="mailto:redakce@zdrojak.cz">Mail redakci</a>

použije prohlížeč uživatelsky definovanou obsluhu, tzn. otevře stránku  http://example.com/mail.php?q=mailto%3Aredakce%40zdrojak%2Ecz. Parametr %s, použitý v URL, je nahrazen celým odkazem, tedy i s  mailto:.

Bezpečnost

Při volání metod registerXXXHandler() kontroluje prohlížeč, zda doména, použitá v URL, je shodná s doménou, z níž byla načtena stránka, která se o registraci pokouší. Nelze tak z domény foo.com registrovat ovladač, který by otvíral stránku na doméně bar.com.

Implementace

Stav implementace těchto funkcí je následující:

registerConten­tHandler je implementován ve Firefoxu od verze 2. Lze použít pouhé 3 MIME typy: application/vnd.mozilla.maybe.feed, application/atom+xml a application/rss+xml. Všechny tři jsou navíc ekvivalentní a všechny obdrží veškerý obsah s MIME typem, odpovídajícím RSS nebo ATOMu. Jiné typy zatím registrovat touto funkcí nelze. Ostatní prohlížeče metodu registerConten­tHandler nepodporují.

registerProto­colHandler je implementován ve Firefoxu od verze 3 a v Chrome od verze 13 (nyní v beta channel). Mezi implementacemi je rozdíl – zatímco Firefox umožní registrovat si jakýkoli vlastní protokol (např. „evernote“ pro přidání odkazu do poznámek), u Chrome musí vlastní protokol začínat řetězcem „web+“. Bez něho lze předefinovat pouze protokoly „mailto“, „mms“, „nntp“, „rtsp“ a „webcal“.

Ukázka

Ukázkovou stránku naleznete na adrese ukazky.zdrojak­.cz/protocol. Nejprve je potřeba zaregistrovat protokol – použili jsme protokol „web+zdrojak“, kvůli kompatibilitě s prohlížečem Chrome:

navigator.regis­terProtocolHan­dler(„web+zdro­jak“, „https://www.zdrojak.cz/wp-content/uploads/ukazka/pro­tocol/obsluha­.php?v=%s“, „Zdrojak User Protocol“);

Pokud máte takto zaregistrovaný protokol, budou všechny odkazy ve tvaru <a href="web+zdrojak:blablabla"> otevřeny jako stránka https://www.zdrojak.cz/wp-content/uploads/ukazka/pro­tocol/obsluha­.php?v=web+zdro­jak:blablabla.

Při volání této metody bude prohlížeč požadovat od uživatele schválení:

Kliknutím na odkaz se otevře dialog s dotazem, jak odkaz zpracovat, zda použít registrovaný protokol, nebo nějakou vlastní aplikaci:

Pohledem do Nastavení v prohlížeči zjistíme, že v seznamu aplikací přibyl náš uživatelsky definovaný protokol.

Po registraci protokolu na stránce ukazky.zdrojak­.cz/protocol můžeme vyzkoušet fungování odkazů – lze i zde:

Odkazy mají různý tvar – vždy začínají web+zdrojak: a následují parametry. Ty jsou vyhodnoceny obslužným skriptem. V případě parametru začínajícího „n/“, je uživatel přesměrován na určený štítek zde na Zdrojáku, pokud parametr začíná „q/“, je přesměrován na hledání. Jinak se pouze vypíše parametr na výstup.

Rozdíly

Jak ve Firefoxu (testováno ve verzi 5), tak v Chrome (13) fungují takové odkazy naprosto perfektně při kliknutí myši. Pokud je vložíme do adresního řádku prohlížeče, chovají se různě: ve Firefoxu otevřou stránku tak, jak je definována v obsluze. U Chrome vede zadání odkazu v tomto tvaru do adresního řádku ke spuštění vyhledávání.

Na registrační stránce je použit i element <img>, který má nastavenu adresu obrázku na src="web+zdrojak:otr"  – taková adresa je ovladačem zpracována tak, že je poslán obrázek ve formátu PNG. Při zadání adresy do adresního řádku zobrazí FF obrázek, Chrome spustí hledání. Při použití v elementu IMG nezobrazí Firefox nic, Chrome zobrazí obrázek.

Poznámka: Při registraci ovladače se dvojtečka za schéma nepíše, v odkazu se píše (a je předána i do ovladače).

Uživatelské protokoly

Uživatelské ovladače protokolů mohou nalézt uplatnění ve webových aplikacích, jako jsou kalendáře, maily, poznámkové bloky, správce odkazů atd. Lze je použít jak pro předefinování některých existujících schémat (a tím tedy pro přesměrování obsluhy mailů, multimédií atd. na vlastní aplikaci), tak i pro vytvoření vlastních protokolů pro vlastní aplikaci.

Nevýhodou může být zatím poměrně špatná podpora v prohlížečích – Firefox sice podporuje metodu registerProto­colHandler od verze 3 (ContentHandler dokonce od verze 2), ale až donedávna to byl jediný prohlížeč (a pokud nepočítáme betaverzi, tak je to stále jediný „oficiální“ prohlížeč).

Další literatura

Komentáře

Odebírat
Upozornit na
guest
4 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
Zobrazit všechny komentáře
Opravdový odborník :-)

první :-)

Díky za článek, je to zajímavé. Možná by to šlo využít na torrenty, nebudu je stahovat k sobě, ale na server přes webové rozhraní, nebo na nějaké ty kalendáře… Ale zatím jediné reálné využití jsem viděl u těch „mailto:“ adres. Nebo si vážně myslíte, že web někdy nahradí desktop?

Oxymoron

že by krize programování? Nebo spíš vliv autorského práva?

Viktor

směr vývoje aplikací včetně ide pro jejich vývoj je jasný, kdo dneska začne from scratch psát desktop aplikaci? a za pár let až se poměr tabletů vs pc otočí, o čemž může pochybovat opravdu jenom ten kdo nechce vidět ani slyšet, bude jasno, stavající desktop aplikace budou již historie …

Přístupnost není jen o splnění norem: nový pohled na inkluzivní design

Přístupnost a inkluze možná nepatří mezi nejžhavější témata digitálního světa – dokud o nich nezačne mluvit Vitaly Friedman. Na WebExpo 2024 předvedl, že inkluzivní design není jen o splněných checkboxech, ale hlavně o lidech. S energií sobě vlastní obrátil zažité přístupy naruby a ukázal, že skutečně přístupný web je nejen možný, ale i nezbytný.

Efektivnější vývoj UI nebo API: Co si odnést z WebExpo 2025?

Různé
Komentáře: 0
Jak snadno implementovat moderní uživatelské rozhraní? Které funkce brzdí rychlost vašeho webu? A kdy raději sami přibrzdit, abychom využitím AI nepřekročili etické principy? Debatu aktuálních dev témat rozdmýchá sedmnáctý ročník technologické konference WebExpo, která proběhne v Praze od 28. do 30. května. Který talk či workshop si rozhodně nenechat ujít? Toto je náš redakční výběr z vývojářských hroznů.

Zapřáhněte AI jako nikdy předtím. Květnová konference WebExpo přivítá hvězdy technologického světa

Od 28. do 30. května 2025 promění pražský Palác Lucerna na tři dny technologická konference WebExpo. Na programu je více než 80 přednášek a workshopů od expertů z celého světa. WebExpo tradičně propojuje vývojáře, designéry, marketéry i byznysové lídry a nabízí praktické dovednosti, strategické myšlení a přináší nejnovější trendy nejen v oblasti AI.