HTML

Co to znamená a jak funguje?

Zkratka HTML, vycházející z iniciálů slovního označení Hypertext Markup Language, představuje označení pro značkovací jazyk sloužící k vytvoření uživatelského frontendu webových stránek. Tedy zkrátka toho, co uživatel, lidově řečeno, vidí v prohlížeči po načtení některé z webových stránek na protokolu HTTP/HTTPS.

Značkovací jazyk HTML bývá mnohdy laickou veřejností, ale i jeho pokročilejšími uživateli, označován jakožto programovací jazyk. Není tomu tak. Samotné HTML neumožňuje jakékoliv programování, změnu obsahu stránky na základě nějaké události či cokoliv podobného. Jedná se o značkovací jazyk, který umožňuje webovému vývojáři zapsat obsah ve statickém a tedy o sobě samotném neměnném stavu.

Samotné HTML může být vytvořeno hned několika způsoby. Jednak jej může autor webu zcela ručně od A do Z napsat. To znamená vytvořit statické soubory s koncovkou .html či .htm a do nich umístit neměnný obsah. Takto se označuje plně statický obsah.

Druhou možností je generování dynamického obsahu do mnohdy unikátního statického HTML layoutu (layout - rozvržení, jak jsou prvky na stránce uspořádané). Stále jde o to samé HTML, uživatel vidí statický obsah, ale některý ze serverových jazyků může uživateli servírovat pokaždé jiný obsah. Například na základě toho, zda je návštěvník stránek přihlášený, pochází z České republiky či jiné země, v závislosti na jeho právech a mnoha dalších proměnných

Na možnosti samotné modifikace HTML na straně serveru se podiváme v závěru této kapitoly.

Vzhledem k tomu, že obsáhnout celé HTML je zcela nad rámec této kapitoly a vydalo by na celá samostatná skripta, budeme sebou muset hodit. Držte si klobouky, dámy a pánové, bude to fičák, jdeme na to!

Syntaxe a sémantičnost

Dodržování správné syntaxe dle standardu je nutný základ. Vyhnete se tím nežádoucím jevům, kdy u někoho se HTML stránka zobrazuje v pořádku, a někdo uvidí v tom lepším případě pouze drobně rozsypané stránky, v tom horším nečitelnou stránku s písmenky podobnými rozsypanému čaji.

Abychom se tomuto vyhnuli, je třeba důsledně dodržovat nejen aktuální standardy HTML5, nýbrž také jisté konvence. O co přesně jde?

Tagy teoreticky

Celá podstata HTML je postavena na tzv. tazích (tagy v jednotném čísle). Tagy si představme jako jistou obálku, která určuje, komu její obsah bude doručen. Každý adresát přitom vykonává jen jedinou svou činnost a nic jiného neumí. Pokud tag zapíšete chybně, pomyslná obálka nebude nikomu doručena a prohlížeč nebude vědět, co se má s jejím obsahem stát. Obálku ale nemusíme doručovat pouze v České republice, ale také do zahraničí. Stejně jako množství států na Zemi máme ještě více prohlížečů a jejich různých verzí. Každá z nich se k jakémukoliv nestandardnímu zápisu může zachovat odlišně.

Dodržování syntaxe, tedy sématičnosti, je proto základ!

Tagy

Tagy prakticky – párové nebo nepárové? Toť otázka

Jako tagy označujeme prostředek, kterým zpravidla (ne vždy!) označujeme určitý úsek webové stránky (HTML). Může jít o text, ale také o obrázek, tabulku, formulář a další.

Jejich znění dle standardu HTML umisťujeme mezi znaky < a >.

Pokud něco ohraničujeme, někde „to” začíná a jinde končí. Pro takové případy máme tagy párové. Jsou vždy dva se stejným názvem. Ten druhý ukončující má po první závorce navíc ještě lomítko, které značí ukončení platnosti tagu v tom daném místě. Někde se tedy tagy otevírají <nejakytag> a někde končí </nejakytag>. Mezi tyto tagy následně umisťujeme náš obsah, který chceme tímto tagem zprocesovat – předat jej nějakému zaměstnanci, který naši informaci zpracuje.

Mimoto existují ještě tzv. nepárové tagy. Ty se nikde neotevírají, ani neuzavírají. Zkrátka jen použijeme „otevírací“ tag (tzn. ten bez lomítka po ostré závorce) a na místě, kde jsme jej použili, provede nějakou akci.

Abychom nechodili kolem horké kaše, mějme text „Ahoj Honzíku, jak se máš? Mám se dobře.“, který chceme celý ztučnit, podtrhnout v něm oslovení a na nový řádek umístit odpověď. Provedeme to následovně

<b>Ahoj <u>Honzíku</u>, jak se máš?<br>
Mám se dobře.</b>

a vypíše se

Ahoj Honzíku, jak se máš?
Mám se dobře.

Trošku jsme nyní předběhli kapitoly, ale věřím, alespoň elementární princip fungování tagů je nyní více jasný.

Pojďme ale postupovat popořadě a vrhnout se na první funkční tagy.

Základní struktura HTML dokumentu

Doctype – typ dokumentu

HTML dokument – to je pro nás nové slovní spojení. Představuje onen pomyslný soubor .html. Aby si však byl prohlížeč plně jist, že jde o soubor s obsahem typu HTML, měli bychom mu to to dle standardu HTML5 dát nějak vědět.

Učiníme tak pomocí párového tagu <html>, případně <!doctype html>. Uzavírací tag je poté vždy </html>. Který z otevíracích tagů použijete, je čistě na Vás. :) Mezi tyto dva tagy vkládáme celý další obsah. Nikam jinam, ani před otevírací ani za uzavírací tag.

<html>
...
</html>

Head - hlavička dokumentu

Do hlavičky dokumentu ohraničené párovým tagem <head> a </head> umisťujeme vše, co má být očím uživatele „na první pohled“ neviditelné, ale důležité pro prohlížeč. Primárně zde nastavujeme název stránky, kódování, přidáváme styly stránky, definujeme klíčová slova a další atributy.

<html>
    <head>
        ...
    </head> 
</html>

Správné kódování je základ

Jak již víte z předchozí kapitoly o kódování, existuje jich poměrně velké množství. Každé vznikalo především v jiném období a nemá smysl zde opakovat, co již bylo napsáno. Obecně ale neuděláte žádnou chybu, pokud použijete takřka univerzální kódování UTF-8.

Nastavme tedy v hlavičce HTML dokumentu kódování na UTF-8, abychom měli víceméně 100% jistotu, že se text zobrazí všem návštěvníkům tak, jak zamýšlíme.

<html>
    <head>
        <meta charset="utf-8">
    </head>
</html>

Titulek stránky patří do <head>

Teď mám na mysli ten titulek, který je viditelný na kartě stránky nahoře v prohlížeči. Nastavíme jej také v a je vhodné jej uvádět až po nastavení kódování. Provedeme to pomocí párového tagu <title> a </title>, mezi které napíšeme právě onen název stránky.

<html>
    <head>
        <meta charset="utf-8">
        <title>Název mojí první stránky</title>
    </head>
</html>

Favicon - ikonka stránky

Podstatná věc pro vizuál našeho webu. Ikonka zobrazující se nalevo od názvu HTML dokumentu na kartě v prohlížeči se označuje jako tzv. favicon. Pochází ze spojení sousloví „favourite icon“, kdy v dávným dobách bylo možné rychle rozlišit oblíbené stránky. A slouží dodnes!

<html>
    <head>
        <meta charset="utf-8">
        <title>Název mojí první stránky</title>
        <link rel="shortcut icon" href="favicon.ico">
    </head>
</html>

Podstatné je, aby soubor s ikonkou byl ve správném formátu .ico.

Klíčová slova, autor

Následující tagy jsou „navíc“ a v dnešní době nejsou takřka vůbec podstatné. Pro úplnost je ale uvádím

<meta name="description" content="popis obsahu na stránce">
<meta name="keywords" content="stránka, můj web, zajímavá stránka">
<meta name="author" content="Moje jméno">

Zákaz indexování nebo procházení stránky roboty

Pokud chceme internetovým robotům procházejícím weby zakázat přístup na stránku, respektive na odkazy z ní vedoucí, či zamezit její samotnou indexaci ve webových vyhledávačích typu Googlu, můžeme to učinit pomocí tagů

<meta name="robots" content="noindex">
<meta name="robots" content="nofollow">

Lze je i kombinovat

<meta name="robots" content="noindex, nofollow">

Je toho mnohem víc!

Do hlavičky našeho HTML dokumentu můžeme umisťovat ale mnoho dalšího, například linkovat styly webu z externího CSS souboru, nastavit přesměrování, definovat jazyk stránky... Mnoho z těchto tagů se ale v aktuální době nevyplatí používat.

Linkování CSS v externím souboru

Tedy až na ten pro linkování CSS. ;)

<link rel="stylesheet" href="styly.css" type="text/css">

Body - tělo dokumentu

Tady se začíná odehrávat veškerá ta sranda. Vše, co dozajista uvidí uživatel, se nastavuje právě v těle dokumentu. Představují jej párové tagy <body> a </body> a umisťujeme je za hlavičku. Mezi ně umisťujeme obsah webu.

<html>
    <head>
        ...
    </head>
    <body>
        ...
    </body>
</html>

Elementy v těle stránky

Nadpisy

Jako první je vhodné začít nadpisy. V rámci standardu existuje šest hlavních úrovní nadpisů. Číslujeme je vzestupně, kde ten s nejnižším číslem je nejdůležitější a zpravidla vždy by jeho zobrazení mělo být vizuálně největší. Stejnou prioritu nadpisům předkládají i vyhledávače.

Tagy nadpisů sestávají z prvního písmenka anglického „headline“ a čísla úrovně nadpisu. Pro nejvyšší a hlavní nadpis proto napišme

<h1>Můj hlavní nadpis</h1>

Tento <h1> nadpis je vhodné mít na stránce vždy a může se shodovat s obsahem v <title>.

Uvedli jsme si, že máme 6 úrovní nadpisů, všechny nadpisy proto můžeme zapsat

<h1>Nadpis 1. úrovně</h1>
<h2>Nadpis 2. úrovně</h2>
<h3>Nadpis 3. úrovně</h3>
<h4>Nadpis 4. úrovně</h4>
<h5>Nadpis 5. úrovně</h5>
<h6>Nadpis 6. úrovně</h6>

Formátování textu

Odstavce

Na stránce nebývají pouze nadpisy, ale i běžné texty. Zpravidla je dělíme do odstavců, to v HTML zajistíme pomocí tagu párového <p>, který je zkratkou pro anglické slovíčko „paragraph“.

V HTML nám tento tag automaticky oddělí dva odstavce větší horizontální mezerou.

<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Aliquam erat volutpat. Mauris metus. Integer malesuada.</p>
<p>Aliquam ornare wisi eu metus. Nullam faucibus mi quis velit. Etiam ligula pede, sagittis quis, interdum ultricies, scelerisque eu. Integer vulputate sem a nibh rutrum consequat. Morbi scelerisque luctus velit. Vestibulum fermentum tortor id mi.</p>

Tučný text

<b>Tento text se vypíše tučně.</b>
<strong>Tento text bude také tučný pomocí staršího tagu.</strong>

Kurzíva

<em>Tento text se vypíše kurzívou.</em>

Podtržení

<u>Tento text se vypíše s podtržením.</u>

Škrtnutí

<del>Tento text se vypíše přeškrtnutý.</del>

Horní a dolní index

<p>Pokud chci citovat, mohu se použít horní index<sup>1</sup>.</p>
<p>Výsledkem rovnice <strong>x<sup>2</sup> = 4</strong> jsou kořeny x<sub>1</sub> a x<sub>2</sub>.</p>

Odkazy

Velmi podstatným pilířem pro každý web jsou odkazy, bez nich by nebylo možné z jedné stránky odkazovat na druhou. To zajišťuje párový tag <a>. Adresu, kam uživatele odkážeme, umístíme do atributu href. Toto je poprvé, co se s pojmem atribut setkáváme, avšak pouze slovně. Již jsme jej používali například u kódování v hlavičce. Samotný text odkazu poté uvedeme mezi otevírací a uzavírací tag.

<a href="https://web.tld">Odkaz na jiný web</a>

Otevření odkazu na nové kartě

Vhod může přijít otevření odkazu na nové kartě, učiníme tak pomocí druhého atributu s názvem target a hodnotou _blank.

<a href="https://web.tld" target="_blank">Odkaz na nové kartě</a>

Seznamy alias odrážky

V HTML máme rozlišujeme 2 typy seznamů - číslované a nečíslované.

Nečíslované seznamy

Nečíslovaný seznam definujeme pomocí párového tagu <ul>. V jeho rámci poté každou položku na nový řádek přidáme pomocí taktéž párového tagu <li>.

<ul>
    <li>První položka nečíslovaného seznamu</li>
    <li>Druhá položka nečíslovaného seznamu</li>
    <li>Třetí položka nečíslovaného seznamu</li>
<ul>

Číslované seznamy

Odrážkový seznam s čísly zapíšeme zcela analogicky jako ten nečíslovaný, akorát namísto <ul> použijeme tag <ol> - unordered list vs. ordered list - (ne)seřazený seznam.

<ol>
    <li>První položka číslovaného seznamu</li>
    <li>Druhá položka číslovaného seznamu</li>
    <li>Třetí položka číslovaného seznamu</li>
<ol>
Vlastní číslování

Pokud chceme mít číslovaný seznam, poté zobrazit odstavec a následně v číslování pokračovat, je nutné kvůli odstavci <ol> ukončit. Abychom mohli pokračovat v číslování, stačí <ol> tagu přidat atribut start a odpovídající hodnotou.

<ol start="8">
    <li>Toto je položka s osmým pořadím</li>
    <li>Následuje devátá položka</li>
<ol>

Obrázky

Mezi podstatné prvky webových stránek nesmíme zapomenout zařadit také obrázky, jejich zobrazení je velice jednoduché.

<img src="obrazek.jpg" alt="Pěkný obrázek">

Všimněte si atributu alt, ten je v HTML povinný, ač jej mnoho vývojářů zapomíná uvádět. Pro případ, že by se obrázek nepodařilo načíst, zobrazí se tento popisek. Měl by tedy suplovat obsah obrázku a alespoň rámcově jej popsat.

Využít také můžeme atributu title, který se zobrazí po najetí kurzorem myši na obrázek.

<img src="obrazek.jpg” alt="Pěkný obrázek" title="Popisek">

Video

Linkování a zobrazení videa je stejně snadné jako u obrázku, využijeme k tomu párového tagu <video>. Pomocí atributu poster můžeme zobrazit obrázek, který se zobrazí před spuštěním videa. Adresu videa následně vyplníme do vnořeného nepárového tagu <source>, který můžeme uvést vícekrát pro různé alternativní formáty videí.

<video poster="nahled.jpg>
    <source src="video.mp4" type="video/mp4">
    <source src="video.webm" type="video/webm">
</video>

Formuláře

Poslední velkou kapitolou základních prvků v HTML jsou formuláře. V oblasti kybernetické bezpečnosti se s nimi budeme setkávat vskutku často. To proto, neboť při vyplnění formuláře a jeho odeslání vlastně odesíláme nějaká data na server.

Toho využijeme jednak při možném analyzování provozu nebo penetračních testech, kdy testujeme formuláře na různé zranitelnosti. Ať už jde o SQL injection nebo XSS, formuláře a požadavky zde hrají velkou roli. Právě HTML je vstupem na bitevní pole serveru pro hackera a nás – bezpečností experty (uvažujeme-li o nás jakožto o white hats).

Co nesmí formuláři nikdy chybět

Není do dogma, ale zpravidla by formuláři neměl chybět obalovací párový tag <form>, ve kterém budou obsaženy veškeré interaktivní prvky.

<form>
    ...
</form>

Data musíme někam odeslat

Abychom data ve formuláři mohli po stisknutí tajemného tlačítka (o něm později) odeslat, musíme rozhodnout a definovat si hned několik proměnných

  • jakým požadavkem budu data odesílat
  • kam je budu odesílat

Jakmile toto víme, můžeme se pustit do sestavení tzv. hlavičky formuláře pomocí atributů a hodnot, které přiřadíme k

elementu.

Jak budeme data odesílat?

Máme na výběr v zásadě ze dvou možností

  • POST
  • GET

POST požadavek využijeme v drtivé většině případů, nemá omezení délky a je bezpečnější. Při posílání dat pomocí POST požadavku totiž veškerá data zasíláme v hlavičce, která, při využití SSL certifikátů (URL začíná HTTPS), není pro případné záškodníka po cestě (MITM - man in the middle) standardně viditelná. Samozřejmě, pokud pomineme například využití proxy serveru či nějaký virus přímo na straně uživatele či dokonce na serveru.

Oproti tomu GET požadavek zasílá veškerá data enkódovaná v URL adrese. Jednoduše tak na konec cílové URL přidá GET parametry a jejich hodnoty. Velkou nevýhodou je, že takto zasílaná data jsou zpětně poměrně snadno dohledatelná. A to díky jejich přítomnosti v samotné URL adrese. Měli-li bychom pomocí GET odesílat formulář pro přihlášení, bylo by to poměrně nebezpečné, představte si, že se někdo podívá do historie procházení v prohlížeči anebo do logů na cílovém serveru a uvidí tuto URL

http://domena.tld/prihlaseni?jmeno=admin&heslo=supertajneheslo

To, jakým způsobem budete data odesílat, definujeme pomocí atributu method.

POST (vše je v hlavičce):

<form method="post">
    ...
</form>

GET (parametry jsou vidět v URL):

<form method="get">
    ...
</form>
Kam budeme data odesílat?

Data, která uživatel odesílá, je vhodné nějak zpracovat. O to se zpravidla stará server a nějaký jazyk zde běžící. Data neumí zpracovat HTML, neboť, jak již víme, jde pouze o značkovací (statický) jazyk, nikoliv dynamický. Neumí se rozhodovat. Toto tedy přenecháme například PHP či jinému jazyku, který čeká na uživatelův požadavek – data z formuláře.

Aby však prohlížeč věděl, kam má vyplněná data odeslat, použijeme ve <form> tagu atribut action, jehož hodnotou bude právě URL adresa, na níž server očekává data z formuláře. Může jít o relativní adresu

<form method="get" action="/prihlaseni">
    ...
</form>

Ale také o absolutně definovanou (lze odkazovat i na jinou doménu, než na tu, na které je uživatel)

<form method="get" action="https://domena.tld/prihlaseni">
    ...
</form>

Nezapomeňme zkombinovat action s, nám již známým, method.

Prvky formuláře

Všechny prvky formuláře se vkládají mezi tagy <form> a </form>. Až na výjimky uvedené níže jsou tyto prvky jsou nepárové, nemají tedy uzavírací tag.

input

Jednoduše jde o jakýkoliv textový vstup od uživatele. Použít můžeme hned několik jeho variant. Ty definujeme pomocí atributu type a příslušné hodnoty. Obsah jednotlivých polí ovlivňuje atribut value. Ten může být předvyplněný. Při odeslání formuláře obsahuje právě value hodnotu vloženou uživatelem.

Je vhodné každý input nějak nazvat pomocí atributu name. Tak se poté bude jmenovat parametr v hlavičce/URL (v závislosti na POST/GET parametru).

<input type="..." name="jmeno">
  • text
    • klasické textové pole
    • <input type="text" name="jmeno">
  • password
    • textové pole s textem viditelným jako tečky, vhodné pro hesla
    • <input type="password">
  • hidden
    • textové pole, které uživatel nevidí a nemůže jej vyplnit
    • využívá se ve spojitosti s anti-spamovou ochranou, kdy se pole vyplní předem určenou hodnotou např. JavaScriptem a pokud se hodnota neshoduje, data se zahodí
    • <input type="hidden">
  • radio
    • zaklikávací výběr z několika možnosti (puntíků), lze vybrat pouze jednu
    • skupina se utvoří pomocí dalšího atributu name, který je shodný pro skupinu
    • <input type="radio" name="skupina1"> Možnost 1
    • <input type="radio" name="skupina1"> Možnost 2
  • checkbox
    • zaškrtávací políčko, vrací hodnoty typu bool, a to true/false
    • <input type="checkbox">
  • submit
    • tlačítko sloužící k odeslání formuláře, v němž se nachází
    • <input type="submit" value="Odeslat formulář">
  • reset
    • tlačítko, které vymaže všechny hodnoty vyplněné ve formuláři
    • <input type="reset" value="Vymazat formulář">
  • file
    • tlačítko umožňující výběr souboru k nahrání ze zařízení uživatele
    • často podporuje i drag&drop (závisí na operačním systému a prohlížeči)
    • <input type="file">
  • button
    • tlačítko, které může zavolat nějakou JavaScriptovou funkci
    • <input type="button">
  • další pole
    • definují se podobně jako výše, stačí změnit hodnotu atributu type
    • výhodou je, že například number dovolí zadat pouze čísla, date zobrazí kalendář a podobně
      • email
      • tele
      • number
      • range
      • color
      • date
select

Umožňuje výběr z předem definovaných možností. Jeho value je hodnota vybrané možnosti.

<select name="obor">
    <option value="it">informační technologie</option>
    <option value="kb" selected="selected">kybernetika</option>
    <option value="gy" selected="selected">gymnázium</option>
</select>
textarea

Prakticky se jedná o input typu text, ale s tím rozdílem, že umožňuje psát text na více řádků a neomezenou (v rámci možností) velikost – počet řádků i „sloupců“ lze definovat.

Pozor, jedná se o párový tag, tedy začíná a končí. Obsah mezi těmito tagy je obsahem daného textového pole.

<textarea cols="60" rows="100">
</textarea>
Co dalšího umí ještě formuláře?

Jednotlivým prvkům formuláře můžeme dále nastavit (samozřejmě tehdy, pokud možnost dává smysl v daném kontextu)

  • selected
    • automaticky vybraná možnost (např. u selectu)
  • disabled
    • možnost není dostupná, checkbox/radio nelze zakliknout
  • readonly
    • obsah nelze změnit, je pouze ke čtení
  • autofocus
    • po načtení HTML stránky se kurzor automaticky přesune na daný prvek
  • placeholder
    • předvolený text, který po kliknutí na prvek zmizí
  • required
    • povinný prvek, jehož nevyplnění zapříčiní neodeslání formuláře

Div – obal pro všechno

Nyní máme potřebnou znalost základních elementů (tagů). Abychom je mohli na webové stránce nějak rozumně umístit, je vhodné je umístit do divů. Jedná se o párový tag <div> a </div>.

<div>
    ...
</div>

Selektory id a class

Abychom mohli s jednotlivými částmi stránky rozdělenými do divů dále pracovat, je záhodno si divy pojmenovat. Můžeme použít buďto id anebo class. Atribut id má tu výhodu, že se na stránce dle standardu HTML5 smí vyskytovat pouze jednou (např. hlavička, obsah, patička).

Výhoda class naopak tkví v tom, že ji lze na stránce používat opakovaně – například pro stylování textu, který chceme mít v daných divech vždy tučný.

<div id="hlavicka">
    ...
</div>
<div class="tucne">
    ...
</div>

Obrovský benefit atributů id a class je ten, že je lze samozřejmě přidávat jakýmkoliv tagům na stránce. Tedy můžeme například přidat class pro <p> anebo <strong>.

<div id="obsah">
    <p class="citace">
        Text citace, který může být <strong class="cervena">tučný
        text</strong>, bude například i červený.
    </p>
</div>

Špetka CSS

Jak je to možné? Stylování jednotlivých id a class probíhá v CSS, ale to není předmětem této kapitoly. Snad jen uvedu, že k id se lze v CSS dostat takto (pomocí hashtagu)

#obsah {
    width: 300px;
}

A ke class následovně (pomocí tečky)

.cervena {
    color: red;
}

JavaScript

JavaScript je úžasná technologie. Umožňuje nám ze statického HTML (obohaceného o styly pomocí CSS) vytěžit maximum. Díky JavaScriptu dokážeme konečně tvořit dynamické stránky, jejichž obsah se v závislosti na čase může neustále měnit.

Jak je to možné?

Všichni jistě známe PHP, jeden z populárních, a nebál bych se říct, že doslova nejrozšířenější backendový programovací jazyk. Umožňuje nám kupříkladu zpracovat přijatá data z formuláře nebo načíst data z databáze, porovnat je s těmi z formuláře a vypsat na jejich základě nějaká data uživateli.

JavaScript dělá prakticky něco podobného, akorát přímo na straně uživatele – návštěvníka naší webové stránky. Vedle frontendového JavaScript existují i ty backendové, které běží na serveru a jsou si rovny například s již zmiňovaným PHP – jde kupříkladu o node.js.

Výsledkem jsou mnohem svižnější stránky, kdy jsme schopni při uživatelově kliknutí nenačítat znovu celý HTML soubor, ale dotázat se například nějakého API, z něj dostat data a ta vypsat.

O tomto si ale povíme něco v další kapitole.

results matching ""

    No results matching ""