Tag | Význam | Párový | Výskyt |
---|---|---|---|
script | skript, program | ano | kdekoli |
noscript | alternativa ke skriptu | ano | vně skriptu |
style | zápis CSS stylu | ano | <head> |
template | poznámka, která se parsuje | ano | kdekoli |
Zde se zaobírám pouze začleněním skriptů a stylů do HTML, nikoli jimi samotnými. Kurz CSS už jsem napsal, výklad JavaScriptu ještě není hotový.
Párový tag obsahující zápis skriptu. Skript není zapsán v HTML, ale v jiném jazyce, většinou je to JavaScript.
Tag <script> může být kdekoli v dokumentu, v hlavičce i v těle. Instrukce programu se začnou okamžitě provádět (někdy bez viditelného efektu, např. při deklaraci funkcí), jakmile je prohlížeč načte.
Atribut | Význam | Hodnoty | Doporučení |
---|---|---|---|
type | mime-typ obsahu skriptu | text/javascript | používat vždy, ale funguje to i bez toho |
language | jazyk skriptu | Javascript | Jscript | VbsScript | a další | nepoužívat, zastaralé |
src | cesta k externímu skriptu | URL, nejčastěji na soubor *.js | |
defer | odložení běhu skriptu. Skript se provede, až se načte celá stránka, do které je skript vložen, takže nebrzdí její načítání. | bez hodnoty | Používá se u skriptů, které obsahují pouze deklarace funkcí a nejsou v daný čas bezprostředně potřeba, čímž se urychlí načítání. Popis defer |
async | odložení běhu skriptu. Skript se provede, až se skript stáhne, ale mezitím se může vykreslovat stránka. | bez hodnoty | Častěji než defer se používá async, protože se vykoná hned po stažení skriptu, ne po stažení celé stránky. |
event | vazba skriptu na událost (některé prohlížeče to nepodporují) | jméno události dokumentu (např. "document.body.onload") | funguje pouze v IE a není to standardní |
charset | kódování externího skriptu | iso-8859-2 | windows-1250 | UTF-8 | funguje pouze v IE 6 a v Mozille, Opera a IE 5 nechápou |
nonce | povolení skriptu, který by byl jinak zakázaný prostřednictvím content security policy | dlouhý nesrozumitelný řetězec | používat CSP pro důležité weby |
Skripty mohou být do dokumentu vloženy třemi způsoby:
V praxi se používají kombinace těchto tří zápisů. Např. v externím skriptu jsou použité knihovny funkcí, přímým zápisem se inicializují proměnné a in-line stylem se spouští funkce jako reakce na práci uživatele.
Příklad zápisu skriptu do tagu <script>:
<script type="text/javascript"><!--
document.write("Ahoj světe!");
//--></script>
Příklad volání externího souboru:
<script language="Vbscript" src="iloveyou.vbs"></script>
Příklad in-line skriptu volaného událostí onmouseover:
<a href="tajna.html" onmouseover="alert('Neklikej na ten
odkaz!')">Tajemství</a>
Teoreticky ještě mohou existovat prohlížeče a klienti, které by mohly zápis skriptu chápat jako část textu (v praxi už vyhynuly, ale to nevadí). Proto se skript obaluje ještě navíc html poznámkou <!-- -->, aby se kód skriptu nezobrazoval. Novější prohlížeče vědí, že mají toto zapoznámkování ignorovat.
Osobně doporučuji skripty vůbec do poznámek neuzavírat, nikdy jsem nepozoroval, že by to poznámkování bylo potřeba.
Alternativa ke skriptům. Internet Explorer, který skripty provádí, obsah elementu <noscript> ignoruje, i když má skripty zrovna vypnuté. Mozilla tag <noscript> provede, když se v ní vypne JavaScript přes Preferences-Advanced. Starší prohlížeče bez podpory skriptů (plus vyhledávače) berou obsah tagu <noscript> jako běžný text. Tag nemá žádné atributy.
Pozor, jde o tag párový, vynechání koncové značky způsobuje fatální problémy.
Tag <noscript> se umisťuje mimo tag <script>, funguje dokonce, i když ve stránce žádný skript není.
Příklad zápisu skriptu a noscript:
<script>
// ... zápis skriptu
</script>
<noscript>
libovolný html obsah
</noscript>
Zápis stylu dokumentu. Párový tag obsahující zápis stylu. Styl je zapsán v jazyce CSS (Cascading Style Sheets), který není součástí HTML (ačkoli na HTML úzce navazuje).
Tag <style> by měl být součástí hlavičky, ale podle mých zkušeností jej prohlížeče akceptují i jako součást těla.
Atribut | Význam | Hodnoty |
---|---|---|
type | jazyk stylu | text/css | jiné nejsou podporovány |
media | výstupní zařízení, na které se styl vztahuje | all | print | screen | a další |
disabled | vypnutí funkce stylu (z důvodů skriptování) | bez hodnoty |
scoped | brzo zavržený atribut, měl se omezovat jen na část dokumentu, ale nebude se to nikde implementovat |
Styly dokumentu mohou být zapsány trojím způsobem:
V praxi se mohou jednotlivé možnosti kombinovat.
Příklad zápisu stylu použitím tagu <style>:
<style type="text/css">
a {text-decoration: none} /* Odkazy nebudou podtrhávané */
u {font-weight: bold; color: blue}/* Co je podtržené, bude navíc tučné a
modré */
</style>
Příklad zápisu stylu použitím tagu
<link>:
<link rel="stylesheet" href="styly.css" type="text/css">
Příklad in-line stylu:
<p style="color: red">Červený odstavec</p>
Obsah tagu <template> se do stránky nevypisuje. Prohlížeč si ho ale parsuje a může ho použít v nějakém skriptu, například přes innerHTML. Výhoda takového postupu je v tom, že prohlížeč už bude mít tuto část kódu předzpracovanou, takže skript bude rychlejší. Příkladem skriptu, kdy se template hodí, je starý javascriptový lazy loading obrázků.
Bez použití skriptu se <template> chová podobně jako poznámka. Prostě co v ní je, to není vidět. Případné obrázky nebo jiné objekty umístěné uvnitř <template> se nenačítají.
Tag <template> nezná prohlížeč Internet Explorer 11, takže vnitřek tagu vypíše. Dá se tedy použít také jako vtipná podmíněná poznámka pro tento konkrétní prohlížeč. V praxi ale nepodpora IE 11 přináší praktické problémy, takže je potřeba značku <template> zkombinovat s podmíněným komentářem.
Jak psát web píše Yuhů, Dušan Janovský. Kontakt.