Hlavnφ postupy skript∙

 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φ:

  1. Skript se spou╣tφ p°i zavßd∞nφ strßnky. Jde zejmΘna o zßpis do dokumentu metodou document.write(), ale mohou se dφt i jinΘ v∞ci. 
  2. Skritp se vykonß jako reakce na u╛ivatelskou udßlost, nap°. p°ejetφ urΦitΘho elementu my╣φ. Tehdy u╛ nelze zapisovat do dokumentu, d∞lajφ se jinΘ v∞ci. 

Pro efektivnφ prßci v JavaScriptu je dobrΘ osvojit si oba zp∙soby. 

P°φklad obou zp∙sob∙

<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>

Skripty p°i zavßd∞nφ strßnky

St°φdmost pou╛φtφ

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Θ?

Odli╣enφ prohlφ╛eΦ∙

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.

Vklßdßnφ menu ze souboru

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.)

Deklarace funkcφ

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∙.

Skripty reagujφcφ na udßlost

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.

Zkuste:

P°ehled udßlostφ

Na samostatnΘ strßnce.

Provßzanost s funkcemi

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).

Nelze zapisovat do dokumentu

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.

o tvorb∞, ·dr╛b∞ a zlep╣ovßnφ internetov²ch strßnek

Nßvody HTML CSS JavaScript
Pφ╣e Yuh∙, dusan@pc-slany.cz

Hledßnφ:

Javascript na www.jakpsatweb.cz

Pφ╣e Yuh∙: http://dusan.pc-slany.cz, mail: dusan@pc-slany.cz

Poslednφ aktualizace 10.12.2003