Moderní tvorba webových aplikací

O webu

Vlastní hláška alert

Jak si v JavaScriptu vytvořit vlastní hlášky jako je výchozí alert.

4 minuty

V JavaScriptové aplikaci bývá často potřeba uživatele informovat o nějaké akci, která proběhla AJAXem na pozadí.

To není úplně špatné, ale někdy je výchozí podoba alertu moc agresívní. Pokud vyskočí, nejde zpravidla dále na stránce nic dělat. (S tím souvisí i jedna vlastnost alertu, která nejde nahradit, to jest pozastavení skriptů.)

Přepsání alertu

První možnost je funkci alert nahradit, jeho překrytí může vypadat zhruba takto:

window.alert = function (hlaska) {
  // nějaké vypsání hlášky
}

Nepřijde mi to ale moc chytré. Není-li problém všude na stránce volat vlastní funkci, je vhodnější si originální alert ponechat.

Vlastní hláška

Jak si vlastní hlášku vyrobit.

  1. Na stránku se přidá prázdný <div>, který bude mít ID, aby ho JavaScript našel.
  2. Tento element se vhodně nastyluje. Například se může fixně naposicovat k horní straně okna a třeba ještě vycentrovat.
  3. Skrývání/zobrazování potom bude řešené přepínáním tříd (je možné provést i plynulé skrývání).
  4. Vlastní JS funkce potom nastaví dle parametru obsah (innerHTML) a přepne třídu.
  5. Automatické schování hlášky po nějaké době může zajistit časovač setTimeout.

Použití je prosté. První parametr je text. Druhý je volitelný a určuje čas, po kterém se hláška skryje (ve vteřinách):

hlaska('Text první hlášky', 5);

Samostatná ukázka

Přepsání i zachování výchozího alertu

Pan Kubo2 přišel s dobrou připomínkou, že není problém výchozí alert přepsat vlastní hláškou, ale zároveň si ho nejprve uložit do proměnné.

Potom můžeme vytvářet hezké hlášky funkcí pojmenovanou alert, ale mít původní alert stále k disposici.

Snad jediné risiko je, že na tuto změnu chování zapomeneme nebo bude kód pro někoho jiného méně srozumitelný.

function hlaska(text) {
  // vlastní hláška
}
// Uložíme si originální alert
var puvodniAlert = window.alert;
// Přepíšeme ho vlastní funkcí
window.alert = hlaska;

Ukázka

Odkazy jinam

Související články

Časovače v JavaScriptu

Jaké nabízí JavaScript možnosti pro vytváření animací. A jak docílit toho, aby byly plynulé.

15 minut

Detekce otevření DevTools

Jak zjistit, že se na stránce otevřely vývojářské nástroje.

13 minut

JavaScript null a undefined

Rozdíly mezi null a undefined v JavaScriptu, kdy je používat a jak se vyhnout běžným chybám.

12 minut

Sleep v JavaScriptu

Jak implementovat sleep/delay funkcionalitu v JavaScriptu pomocí Promise a async/await

6 minut

Web jecas.cz píše Bohumil Jahoda, kontakt
Seznam všech článků
2013–2025