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

Zdroják » JavaScript » Ťuk, ťuk. -Kdo tam? -Prohlížeč, máte tu rekomando!

Ťuk, ťuk. -Kdo tam? -Prohlížeč, máte tu rekomando!

Články JavaScript

Dalším způsobem, jakým se vaše webová aplikace dnes může vyrovnat aplikacím desktopovým, jsou systémová upozornění. V článku vám představíme, jak je vytvářet a zasílat uživateli.

Nálepky:

Tento text byl inspirován článek An Introduction to the Web Notifications API, jehož autorem je Aurelio De Rosa.

K čemu slouží Web Notifications?

Mezi řadou novinek, které přišly do prohlížečů v poledních letech, jsou i Web Notifications, tj. webová upozornění.

Stránky, resp. webové aplikace, kterým to uživatel povolí, mohou uživateli zaslat upozornění (notifikaci), která se objeví na systémové úrovni.

Příklad: Webový emailový klient běží na pozadí v prohlížeči (v minimalizovaném okně, v neaktivním tabu aj.) a uživatel se věnuje jiné práci. Když mu přijde nový e-mail, zobrazí se mu upozornění, které může vypadat jako jedno z těch na tomto obrázku:

notifikace

Pokud si chcete webová upozornění rovnou vyzkoušet, zobrazte si demo Web Notifications API.

Podpora v prohlížečích

Tak jste si upozornění vyzkoušeli a jistě vás zajímá, jak je to s podporou v prohlížečích. Není dost velká, pokud chcete pokrýt všechny uživatele, ale je dost velká na to, abyste webové notifikace začali brát v úvahu. Podpora ve Firefoxu, Chromu a Safari (jen v desktopových verzích) pokrývá hrubým odhadem více než polovinu uživatelů webu.

Dle webu status.modern.ie je zvažována podpora v příští verzi Internet Exploreru.

Jak to funguje?

Není to žádná velká věda. Základem  všeho je objekt Nofitication.

var notification = new Notification(
      "Honem",
      {
        body: "Napiš nový článek na Zdroják.",
        icon: "http://example.org/nejakaikona.png"
      }
    );
Prázdné okno s upozorněními prohlížeče Chrome

Prázdné okno s upozorněními prohlížeče Chrome

Získání povolení od uživatele

Jelikož systémová upozornění jsou prostor, který by měl mít pod kontrolou uživatel a ne vaše aplikace, musíte napřed požádat o povolení. To učiníte pomocí volání:

Notification.requestPermission(callback);

Pokud je funkce callback zavolána s argumentem granted, povolení jste dostali a vše je v pořádku.

Detekce podpory v prohlížečích

Detekci provedete otestováním výrazu "Notification" in window, pokud je pravdivý, prohlížeč webová upozornění podporuje.

Pozn.: Starší verze prohlížečů podporovaly verzi s vendor prefixy, ta ovšem měla nekompatibilní API (viz poznámka navigator.mozNotification), proto bude nejlepší, když verze prohlížečů podporující verzi s vendor prefixy budete ignorovat, podporujte pouze neprefixovanou verzi.

Parametry upozornění

Syntaxe volání konstruktoru upozornění je:

new Notification(title, options);

Kde title je nadpis upozornění a options je nepovinný JSON objekt, který může obsahovat volby body (řetězec s dalšími informacemi, tj. delší popisek upozornění), icon (URL obrázku, který se zobrazí u upozornění).

 Události upozornění

Upozornění je okno a to má své vlastní události, a sice

  • show – vyvolá se při úspěšném zobrazení upozornění
  • click – vyvolá se, když uživatel na upozornění klikne (tj. chce si přečíst e-mail, na který byl právě upozorněn)
  • close – vyvolá se, když uživatel upozornění zavře (tj. když si ten e-mail pro změnu přečíst nechce)

Příklad použití událostí najdete v dokumentaci.

Co se do článku nevešlo

Objekt options může volitelně obsahovat také parametry lang (může být vhodný pro hlasové čtečky, pokud budou se jím budou řídit při psaní textu) a tag (jeho použití najdete ve specifikaci).

Další informace

Komentáře

Subscribe
Upozornit na
guest
10 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
View all comments
gilhad

U této vlastnosti mě zajímá hlavně jedna věc: Kde se to dá v prohlížeči globálně zakázat (tak, aby to aplikace nemohla ignorovat).

gilhad

No to mě vždycky velice těší, když s novou verzí přichází moře práce jak povypínat podivné nežádoucí fíčury a nastavit tam ty staré, aby to aspoň trochu fungovalo.

Petr Prchal

Aha, takze zdrojak se stal prekladacem zahranicnich clanku, ktere se jeste trosku zhorsi. Zcela bez motivace trolovat, spis nejakym zpusobem motivovat k psani vlastnich a dobrych clanku – Kolik lidi, kteri ctou zdrojak, neumi anglicky natolik dobre, aby si precetli original (ktery je mimochodem plnejsi informaci a IMHO lepe napsany) ? To je takovy nedostatek obsahu, ze se musi psat tyto clanky? Otevrel sem 3 posledni clanky, vsechno jsou prevzate texty…

voycz

Obecne proti prekladani clanku nic nemam, ale kdyz jsou z teto kategorie posledni tri clanky je to uz na zamyslenou. Krome toho aniz bych se chtel otirat o nekoho konkretniho ne kazdemu je dano prelozit (byt technicky) text takovym zpusobem, aby vysledek pri cteni nezpusoboval fyzickou bolest a jeste k tomu se neztratily informace.

Jan Novotný

Spoiler: více o tom píšu zde http://blog.novoj.net/2013/09/04/zbystrete-sve-smysly-technickymi-doplnky/

Používáme to v rámci vlastního rozšíření pro Chrome už přes půl roku a zkušenosti jsou s tím dobré. Při vývoji jsme zavčas informování o věcech, o kterých bychom se jinak dozvěděli až při rozkliknutí vývojářské konzole. A implementace (minimálně v Chrome) je opravdu triviální.

Tomas Jurman

Ahoj Martine
také se mi zdá, že překlady článků se na Zdrojáku v poslední době objevují dost často, ale nemám stím žádný problém. Kdo chce může si přečíst originál. Nejspíš je to způsobené absencí českých autorů. Každopádně článek je velmi zajímavý v češtině i angličtině :) .

p.s. Hledám tátu. Martine, nevíš o někom?

djmetla

Vprvom rade ďakujem za článok práve takú vec som potreboval a vôbec som o tomto nevedel :). Ale chcem sa spýtať začal som sa stým hrať a vo Firefoxe to funguje bez problémov hneď ako bude DOM ready. Problém ale nastáva pri Chrome kde po DOM ready sa nič nestane. Samozrejme to funguje ako click event bez problémov. Lenže to potrebujem pretiahnúť cez AJAX a keď bude mať novú udalosť hneď mu ju zobraziť. Viete mi stým niekto pomôcť? :)

Enum a statická analýza kódu

Mám jednu univerzální radu pro začínající programátorty. V učení sice neexistují rychlé zkratky, ovšem tuhle radu můžete snadno začít používat a zrychlit tak tempo učení. Tou tajemnou ingrediencí je statická analýza kódu. Ukážeme si to na příkladu enum.