Z praktickΘho hlediska se JavaSkripty pou╛φvajφ dv∞ma zßsadn∞ odli╣n²mi zp∙soby. Je to dßno chvφlφ, kdy se vykonßvajφ:
Pro efektivnφ prßci v JavaScriptu je dobrΘ osvojit si oba zp∙soby.
<body>
<script>
document.write("ahoj");
// tento skript se spou╣tφ p°i zavßd∞nφ strßnky
</script>
<img src="obrßzek.gif" onmouseover="this.src='obrazek2.gif'">
<!-- obrßzek je nahrazen p°i p°ejetφ my╣φ -->
</body>
ObecnΘ pravidlo °φkß, ╛e co nenφ nezbytn∞ nutnΘ zapisovat skriptem, by se skriptem zapisovat nem∞lo. Je to toti╛ jist∞j╣φ: n∞kte°φ klienti (zejmΘna roboti) JavaScript nepou╛φvajφ; dal╣φ chyby mohou vzniknout po p°φpadn²ch nesoust°ed∞n²ch ·pravßch strßnky. JednoznaΦnou chybou jsou v tomto ohledu celΘ strßnky zapisovanΘ skriptem.
K Φemu je tedy zapisovßnφ do dokumentu dobrΘ?
Proto╛e se dne╣nφ prohlφ╛eΦe li╣φ v tom, jak n∞kterΘ v∞ci zobrazujφ, je pot°eba zp∙sob, jak do jednoho prohlφ╛eΦe zapsat nebe a do druhΘho dudy. D∞lß se to takto:
<script>
if(navigator.appName == "Netscape")
document.write("nebe");
else document.write("dudy");
</script>
Pokud se n∞komu zdß tento p°φklad neu╛iteΦn², tak to m∙╛e b²t tφm, ╛e nikdy neoptimalizoval pro Netscape.
V²jimkou z pravidla st°φdmosti je generovßnφ patiΦek nebo odkazov²ch menu pomocφ externφho *.js souboru. Tak lze toti╛ vlo╛it stejn² text do mnoha strßnek. V externφm souboru menu.js m∙╛e b²t tento text:
document.write("<a href='index.html'>Hlavnφ strßnka</a>")
document.write("<a href='druha.html'>Druhß strßnka</a>")
atd.
Do ka╛dΘ ze strßnek se potom menu vlo╛φ na pot°ebnΘ mφsto pomocφ zßpisu
<script src="menu.js"></script>
(Je╣t∞ musφm zmφnit, ╛e takovßto tvorba menu d∞lß problΘmy, pokud mßte strßnky ve vφce ne╛ jednΘ slo╛ce (adresß°i). Potom toti╛ nemusejφ fungovat relativnφ odkazy. N∞kte°φ kv∙li tomu dokonce d∞lajφ specißlnφ souborovΘ systΘmy, aby mu to fungovalo.)
Dal╣φ v∞c, kterß se vykonßvß p°i zavßd∞nφ strßnky je deklarace funkcφ. Je to v²hodnΘ d∞lat nap°ed, proto╛e pak budou p°ipravenΘ na p°φpadnou u╛ivatelskou udßlost. To u╛ je druh² zp∙sob pou╛itφ skript∙.
Udßlostφ existuje hodn∞, nejΦast∞ji to jsou r∙znß klikßnφ a p°ejφ╛d∞nφ my╣φ. Nap°. zßpis:
<a href="kamkoliv"
onmouseover="alert('Ahoj')">odkaz</a>
zp∙sobφ vyskoΦenφ hlß╣ky (to je ten alert) s textem Ahoj poka╛dΘ, kdy╛ se ten odkaz p°ejede my╣φ (to je to onMouseOver). Jin² p°φklad:
<input type="text" value="Sem zadejte text"
onfocus="this.value=''">
Formulß°ovΘ pole (input) si p°i aktivaci (onfocus), nastavφ prßzdn² obsah (this.value=''; znamenß, ╛e hodnota (value) bude prßzdn² °et∞zec vymezen² dv∞ma apostrofy). Kdy╛ se polφΦko aktivuje (t°eba tak, ╛e se do n∞j klikne), tak se vyma╛e a Φekß na vstup u╛ivatele.
Jestli╛e byla n∞kde v dokumentu deklarovßna funkce, dß se zavolat p°i urΦitΘ udßlosti. Deklarace funkce s parametrem vypadß t°eba takto (parametr je prom∞nnß soubor):
<script>
function noveOkno(soubor)
{window.open(soubor, "novyRam","width=500,height=400")}
</script>
a volßnφ funkce navß╛u na udßlost kliknutφ (onclick) t°eba na obrßzku (img):
<img value="Klikni" src="zmensenina1.jpg" onclick="noveOkno('obrazek1.jpg')">
V novΘm okn∞ jmΘnem novyRam se otev°e strßnka obrazek1.jpg. Zrovna touto funkcφ by se dala ud∞lat obrßzkovß galerie (muselo by se to trochu doladit).
P°i reakci na u╛ivatelskou udßlost se nedß pou╛φt document.write, Prost∞ nelze zapisovat do ukonΦenΘho dokumentu. Document.write se dß pou╛φt jedin∞ p°i zavßd∞nφ dokumentu (popsßno v prvnφ Φßsti tΘto strßnky). Kdyby se p°ece jen na n∞jakou udßlost vßzalo document.write, tak se obsah strßnky v prohlφ╛eΦi sma╛e a nahradφ tφm zapisovan²m °et∞zcem. P°φklad nevhodnΘho pou╛itφ document.write.
To je prßv∞ zßsadnφ rozdφl mezi ob∞ma p°φstupy. Zatφmco skript∙m p°i naΦφtßnφ (aneb zavßd∞nφ) strßnky kraluje prßv∞ document.write, kter² do dokumentu vpisuje, po naΦtenφ strßnky je document.write nepou╛iteln².
Jak²m zp∙sobem zle tedy pozd∞ji nahradit n∞jak² text podle udßlosti? Jsou na to vlastnosti InnerHTML, OuterHTML a dal╣φ. Fungujφ ale jenom v Mozille, Inetrnet Exploreru 4 a vy╣╣φm.
P°edchozφ: ZaΦlen∞nφ skriptu do strßnky |
Obsah strßnek o
JavaScriptu na serveru Jak psßt web |
Dal╣φ: Zßklady syntaxe |
Vizte tΘ╛:
Udßlosti JavaScriptu P°φklad: zßpis do dokumentu, chybn² zßpis do dokumentu |
o tvorb∞, ·dr╛b∞ a zlep╣ovßnφ internetov²ch strßnek