Jazyk JavaScript byl původnÄ vytvoÅen pro webové prohlÞeÄe. Od té doby se vyvinul v jazyk se Å¡irokým využitÃm na mnoha platformách.
Platformou může být prohlÞeÄ, webový server nebo jiný hostitel, tÅeba i âchytrýâ automat na kávu, pokud dokáže spouÅ¡tÄt JavaScriptové skripty. Každý z nich poskytuje vlastnà specifickou funkcionalitu. Specifikace JavaScriptu ji nazývá hostitelské prostÅedÃ.
Hostitelské prostÅedà poskytuje k jádru jazyka navÃc své vlastnà objekty a funkce. Webové prohlÞeÄe poskytujà způsoby, jak ovládat webové stránky, Node.js poskytuje prvky pro serverovou stranu a tak dále.
Pohled z ptaÄà perspektivy nám ukazuje, co máme, když spouÅ¡tÃme JavaScript ve webovém prohlÞeÄi:
Je zde âkoÅenovýâ objekt nazvaný window, který má dvÄ role:
- Za prvé, je to globálnà objekt pro JavaScriptový kód, jak je popsáno v kapitole Globálnà objekt.
- Za druhé, pÅedstavuje âokno prohlÞeÄeâ a poskytuje metody, jak je ovládat.
Můžeme jej napÅÃklad použÃt jako globálnà objekt:
function ÅekniAhoj() {
alert("Ahoj");
}
// globálnà funkce jsou metody globálnÃho objektu:
window.ÅekniAhoj();
A můžeme jej použÃt jako okno prohlÞeÄe, abychom si zobrazili výšku okna:
alert(window.innerHeight); // výška vnitÅnÃho okna
Existujà i dalšà metody a vlastnosti specifické pro okna, které probereme pozdÄji.
DOM (Document Object Model)
Document Object Model, zkrácenÄ DOM, pÅedstavuje veÅ¡kerý obsah stránky jako objekty, které mohou být modifikovány.
HlavnÃm âvstupnÃm bodemâ stránky je objekt document. S jeho pomocà můžeme na stránce cokoli zmÄnit nebo vytvoÅit.
NapÅÃklad:
// zmÄnÃme barvu pozadà na Äervenou
document.body.style.background = "red";
// po 1 sekundÄ ji zmÄnÃme zpÄt
setTimeout(() => document.body.style.background = "", 1000);
Tady jsme použili document.body.style, ale je toho mnohem, mnohem vÃce. Vlastnosti a metody jsou popsány ve specifikaci: DOM Living Standard.
Specifikace DOMu vysvÄtluje strukturu dokumentu a poskytuje objekty, pomocà nichž s nà lze manipulovat. KromÄ prohlÞeÄů existujà i jiné nástroje, které použÃvajà DOM.
NapÅÃklad DOM mohou použÃvat i skripty na stranÄ serveru, které stahujà a zpracovávajà HTML stránky. Ty vÅ¡ak mohou podporovat jen Äást specifikace.
Existuje také samostatná specifikace CSS Object Model (CSSOM) pro CSS pravidla a styly, která vysvÄtluje, jakým způsobem jsou reprezentovány v podobÄ objektů a jak je lze naÄÃtat a ukládat.
Když mÄnÃme pravidla stylů v dokumentu, CSSOM se použÃvá spoleÄnÄ s DOMem. V praxi je vÅ¡ak CSSOM zapotÅebà jen zÅÃdka, jelikož málokdy potÅebujeme mÄnit CSS pravidla v JavaScriptu (obvykle jen pÅidáváme a odebÃráme CSS tÅÃdy, nemÄnÃme jejich CSS pravidla), ale i to je možné provést.
BOM (Browser Object Model)
Browser Object Model (BOM) pÅedstavuje dalšà objekty, které poskytuje prohlÞeÄ (hostitelské prostÅedÃ) pro práci se vÅ¡Ãm ostatnÃm kromÄ dokumentu.
NapÅÃklad:
- Objekt navigator poskytuje informace o prohlÞeÄi a operaÄnÃm systému. Obsahuje mnoho vlastnostÃ, ale dvÄ nejznámÄjšà jsou:
navigator.userAgentâ o aktuálnÃm prohlÞeÄi, anavigator.platformâ o platformÄ (může pomoci rozliÅ¡it Windows/Linux/Mac atd.). - Objekt location nám umožÅuje naÄÃst aktuálnà URL a může pÅesmÄrovat prohlÞeÄ na jiné.
Takto můžeme objekt location použÃt:
alert(location.href); // zobrazà aktuálnà URL
if (confirm("PÅejÃt na Wikipedii?")) {
location.href = "https://cs.wikipedia.org"; // pÅesmÄruje prohlÞeÄ na jiné URL
}
SouÄástà BOMu jsou i funkce alert/confirm/prompt: ty se nevztahujà pÅÃmo k dokumentu, ale pÅedstavujà ÄistÄ prohlÞeÄové metody pro komunikaci s uživatelem.
BOM je souÄástà vÅ¡eobecné specifikace HTML.
Ano, Ätete správnÄ. Specifikace HTML na https://html.spec.whatwg.org nenà jen o âjazyce HTMLâ (znaÄky, atributy), ale pokrývá i hromadu objektů, metod a rozÅ¡ÃÅenà DOMu specifických pro prohlÞeÄe. Je to âHTML v Å¡irÅ¡Ãm slova smysluâ. NavÃc nÄkteré Äásti majà dalšà specifikace, které jsou uvedeny na https://spec.whatwg.org.
ShrnutÃ
HovoÅÃme-li o standardech, pak máme:
- Specifikaci DOM
- Popisuje strukturu dokumentu, manipulaci s nà a události dokumentu, viz https://dom.spec.whatwg.org.
- Specifikaci CSSOM
- Popisuje styly a jejich pravidla, manipulaci s nimi a jejich vazbu na dokument, viz https://www.w3.org/TR/cssom-1/.
- Specifikaci HTML
- Popisuje jazyk HTML (napÅ. jeho znaÄky) a také BOM (browser object model â objektový model prohlÞeÄe) â různé funkce prohlÞeÄe:
setTimeout,alert,locationa podobnÄ, viz https://html.spec.whatwg.org. PÅebÃrá specifikaci DOMu a rozÅ¡iÅuje ji o mnoho dalÅ¡Ãch vlastnostà a metod.
NÄkteré tÅÃdy jsou navÃc popsány oddÄlenÄ na https://spec.whatwg.org/.
Tyto odkazy si prosÃm zapamatujte, neboÅ¥ tady je toho k nauÄenà tolik, že je nemožné to vÅ¡echno obsáhnout a pamatovat si.
Kdybyste si chtÄli pÅeÄÃst o nÄjaké vlastnosti nebo metodÄ, pÄkným zdrojem je i manuál Mozilly na https://developer.mozilla.org/en-US/, ale pÅÃsluÅ¡ná specifikace může být lepÅ¡Ã: je sice složitÄjšà a delšà na pÅeÄtenÃ, ale poskytne vám solidnà a úplné základnà znalosti.
Když chcete nÄco najÃt, Äasto se vyplatà použÃt internetové hledánà âWHATWG [pojem]â nebo âMDN [pojem]â, napÅ. https://google.com?q=whatwg+localstorage, https://google.com?q=mdn+localstorage.
Nynà pÅejdeme k uÄenà DOMu, jelikož hlavnà roli v uživatelském rozhranà hraje dokument.
KomentáÅe
<code>, pro nÄkolik Åádků je obalte znaÄkou<pre>, pro vÃce než 10 Åádků vložte odkaz na pÃskoviÅ¡tÄ (plnkr, jsbin, codepenâ¦)