Miksi tyylit eivät toimi Netscapessä ilman JavaScriptiä?

Monet ovat ihmetelleet, miksi tyylisäännöstöt (style sheets, CSS) eivät toimi Netscape-selaimessa, jos siitä on disabloitu JavaScript. Tämä juttu selittää lyhyesti, miksi näin todella on.

Netscape toteutti aluksi oman ideansa tyyleistä JavaScriptiä käyttäen; toteutuksen nimikin oli JSSS eli JavaScript Style Sheets. Sitten jälkikäteen toteutusta muutettiin CSS-määrittelyjen suuntaan, mutta tekniikka toimii edelleenkin JavaScriptin päällä. Aihetta käsittelee tarkemmin CSSPG:n artikkeli Something about NS and JSSS.

Tästä seuraa, että Netscapen versiossa 4 ei ole mitään tapaa saada tyylit toimimaan ilman, että JavaScript on enabloituna. Suurta hämmennystä on aiheuttanut se, että Netscapen asetuksissa on kuitenkin erikseen Javascriptille ja tyylisäännöstöille. JavaScriptin disablointi tosiasiallisesti disabloi tyylitkin mutta tämä ei näy niissä asetuksissa mitenkään. Eli kun asetuksissa on valittuna "Enable style sheets" mutta ei ole valittuna "Enable JavaScript", tyylit ovat todellisuudessa disabloituja. - Toisaalta on kyllä mahdollista enabloida JavaScript ja disabloida tyylit, eli noiden kohtien erillisyys ei sinänsä ole turhaa.

Java taas ei liity asiaan muuten kuin että kielen nimi on aiheuttanut lukemattomia sekaannuksia, koska se sekoitetaan JavaScriptiin. Kielten nimien samanlaisuus johtuu lähinnä sanan "Java" mainosarvosta.

Se, että Netscape 4:ssä ei voi käyttää tyylejä ilman JavaScriptiä, on ikävää, koska JavaScriptiin liittyy monia ongelmia, mm. turvallisuusongelmia, joiden takia tietoturva-asiantuntijat usein suosittelevat JavaScriptin disablointia (ks. esim. CERT® Advisory CA-2000-02).

Toisaalta CSS:n käytön yleistyessä ja mutkistuessa käy yhä enemmän niin, että Netscape 4:n CSS-tuen bugisuuden takia saattaa olla parempi pitää se tuki disabloituna JavaScriptin turvallisuusriskeistä riippumattakin. Virheitä on todella paljon ja osa niistä sotkee sivun ulkoasun pahasti, vaikka tyylisäännöstö olisi täysin CSS-spesifikaation mukainen. Ks. CSS Bugs and Workarounds, kohta Netscape Navigator 4. Esimerkiksi margin-, width-, padding- ja border-ominaisuuksista, jotka ovat keskeisiä perusmuotoilun välineitä, mainittu dokumentti toteaa, että Netscape 4:ssä niiden toteutukset ovat "all completely broken, but sometimes, some of them work some of the time" (ja "workaround: unknown").

Sivuntekijän kannalta saattaa siis hyvinkin olla tarpeen tehdä se päätelmä, että on syytä yrittää "piilottaa" Netscape 4:ltä tyylisäännöstö tai ainakin "vaarallinen" osa siitä, siis se osa, joka käyttää piirteitä, joiden Netscape-toteutuksen tiedetään olevan erityisen virheellinen. Tätä ei kannata yrittää esimerkiksi "selaimen tunnistuksella", joka on paitsi hankalaa myös epäluotettavaa. Sen sijaan on parikin aika yksinkertaista keinoa, jotka kuvataan suomeksi Jori Mäntysalon kirjoituksessa Tyylisäännöstön piilotus Netscapelta.


Viimeisimmän päivityksen ajankohta: 2001-08-04

Jukka Korpela