Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: JavaScript ja head-tagit

Triton [26.07.2008 13:18:47]

#

Kaikissa oppaissa mitä olen lukenut on sanottu, että javascript-koodi tulisi laittaa sivujen head-tagien väliin. Ongelma on kuitenkin se, että jos laitan koodin head-tagien väliin, niin ohjelma ei toimi. Jos taas laitan jscript-koodin html-rakenteiden jälkeen, niin koodi toimii. Mistäköhän tämä johtuu?

siirappi [26.07.2008 13:36:33]

#

Jos koodi on head-lohkossa ja viitataan esim. johonkin elementtiin body-lohkossa, ei koodin suorituksen aikana elementtiä vielä ole.

Seuraava ei siis toimi:

<html>
<head>
<script type="text/javascript">
alert(document.getElementById("foo").innerHTML);
</script>
</head>
<body>
<div id="foo">Minua ei ole vielä! =(</div>
</body>
</html>

Tämän pystyy kiertämään window.onload-eventillä, joka suoritetaan vasta kun DOMit summuut on ladattu.

<html>
<head>
<script type="text/javascript">
window.onload = function() { alert(document.getElementById("foo").innerHTML); }
</script>
</head>
<body>
<div id="foo">Minua ei ole vielä! =(</div>
</body>
</html>

Toimii.

Ja ei kai tuosta javascriptin upottamisesta muualle kuin headiin ole mitään haittaa enää nykyään, mutta jos haluaa esim. sivun validaattorista läpi, täytyy muistaa laittaa monimutkaisempi js-pätkä kommentteihin:

<script type="text/javascript">
<!--
if (foo = bar) {
  ...
}
//-->
</script>

Cornix [27.07.2008 03:32:17]

#

Jos käytetään XHTML:ää, oikeaoppinen tapa olisi käyttää CDATA-lohkoa, mutta XML:ää tukemattomat selaimet eivät sitä tue. Osoitteessa http://developer.mozilla.org/en/docs/Properly_Using_CSS_and_JavaScript_in_XHTML_Docum­ents kerrotaan eri tavoista piilottaa JS-koodi vanhoilta selaimilta XHTML-sivulla sekä noiden tapojen hyvistä ja huonoista puolista.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta