Pokud se vám zatím úspěšně dařilo vyhýbat se implementaci Service Workeru na svých stránkách, ale nyní potřebujete doplnit nějakou funkcionalitu, kterou nabízí, zde je přehledný popis pro začátečníky.
Pokračování textu Service Worker: Offline stránky a push notifikaceDebugování nativních akcí prohlížeče
Každý asi ví, že Javascriptový kód jde debugovat vložením slova debugger do kódu nebo vložením breakpointu – což je omezeno tím, že jde vložit jen do JS souboru. Věděli jste ale, že je možné zastavit vykonávání javascript v okamžiku, kdy je zavolána nativní funkce prohlížeče nezávisle na to, která část javascriptu ji vyvolala?
Pokračování textu Debugování nativních akcí prohlížečeUložení hesla v prohlížeči
Všechny současné prohlížeče nabízejí uživatelům možnost uložit si přihlašovací údaje, aby je nemuseli pořád zadávat.
Bohužel programátoři se všemožně snaží prohlížečům ukládání hesel znepříjemnit a znemožnit – samozřejmě ne záměrně, ale tím, že neví, jak prohlížeče ukládání provádí.
ES6 v kostce
Nová verze JavaScriptu zvaná ES6 (ECMAScript 6) je k dispozici již skoro 7 let a za tu dobu se již dostala do všech překladačů (např. Node.js) a i všech moderních prohlížečů.
ES6 nepřináší příliš nových funkčností ale spíše se zaměřuje na to, aby se používání stávajících funkcionalit stalo snažší a aby nebylo potřeba psát tolik kódu (podle DRY). Co všechno tedy přináší nového v porovnání s předchozí verzí?
Pokračování textu ES6 v kostceGrunt, nebojte se automatizace
Grunt je Node.js modul (NPM), pomocí kterého můžete psát úkoly, které na rozdíl od BATCH a SHELL skriptů jsou nezávislé na systému … a hlavně je můžete psát v Javascriptu.
Nemusíte se ale bát, že se svými skromnými znalostmi jQuery nebudete vědět, jak psát skripty pro Node.JS. Úkolem Gruntu je právě co nejvíce zjednodušit nastavení úkolů, které se tak spíše podobá konfiguraci JSON souboru (i když je to JS a ne JSON).
Pokračování textu Grunt, nebojte se automatizaceClear site: Zametáme data
Javascript i server si mohou do prohlížeče ukládat nejrůznější data, např. Cookies, LocalStorage, atd. Stejně tak prohlížeč si může uložit data stránky (styly, skripty, apod.) do cache. Je toho tolik, že ani nemůžete mít přehled o tom, co všechno má váš server v prohlížeči uživatele uloženo.
Jak ale zajistit, aby se v případě odhlášení, nasazení nové verze nebo v nejhorším případě útoku, vše vymazalo nebo vrátilo do požadovaného stavu?
JWT jako prostředek pro přihlašování
Trápí vás, že během přihlašování se posílá nezabezpečené heslo na server a kdokoliv (man-in-the-middle) ho může odchytit a zneužít? Můžete využít JWT, neboli JSON Web Token, který může obsahovat čitelná data a zároveň je chráněn soukromým klíčem proti změnám. Pokud jako klíč použijete uživatelské heslo a někdo bude odposlouchávat přihlášení, nedozví se dané heslo a nebude ho moci zneužít.
Pokračování textu JWT jako prostředek pro přihlašováníClosure: Cache pomocí uzávěr v JS a PHP
Díky uzávěrám (Closure) můžete v JavaScriptu dělat celou řadu věcí, které by jinak nebyly možné. Navíc přibližně od roku 2010 již prohlížeče dokáží práci z uzávěrami optimalizovat, takže nedochází k (větším) únikům paměti (Memory Leaks) a jejich použití je (většinou) bezpečné i pro začátečníky.
A od verze PHP 5.3 můžete uzávěry (resp. anonymní funkce, které uzávěry podporují klíčovým slovem use
) používat i v PHP víceméně stejným způsobem.
Jedním z případů, kdy můžete uzávěry použít k optimalizaci kódu je načítání dat z cache a databáze.
Upload binárního souboru z JS do PHP
HTTP protokol není vhodný pro přenos binárních dat a prohlížeče to většinou řeší nejrůznějším šifrováním. Pokud ale chcete sami z JavaScriptu nahrát nějaký soubor na server a nechcete se příliš zabývat složitostmi, můžete použít trik se zakódováním do Base64.
Je undefined skutečně „undefined“?
V moderních prohlížečích, jako je Chrome, Firefox či Edge skutečně není hodnota proměnné undefined definována.
undefined = 1; //vrátí 1 (ale nezmění!) typeof undefined; //vrátí "undefined"
To je proto, že undefined
již není globální proměnná (tedy window.undefined
), ale jde o speciální konstrukci (podobně jako třeba return;
nebo continue;
). Dokonce i hodnota window.undefined
je vždy nedefinována, i když do ní něco přiřadíte.