JavaScript: mukavuutta, mutta myös riskejä

JavaScriptillä voidaan tehdä toimintoja, jotka helpottavat lomakkeiden täyttämistä, linkkien seuraamista ja muuta käyttöä. Enimmäkseen kuitenkin JavaScriptin käyttö nykyisin aiheuttaa esteellisyyksiä, ja siksi tarvitaan oikeita menettelytapoja sen käytössä.

Tässä käsitellään JavaScriptiä esteettömyyden kannalta muutaman esimerkin valossa. Lisätietojen kautta löytyy järjestelmällisempiä esityksiä aiheesta.

Pikainen palaute

JavaScriptillä voidaan liittää lomakkeisiin syöttötietojen tarkistuksia, joiden ansiosta käyttäjä ehkä saa heti palautteen, jos lomakkeen täyttämisessä on tehty virhe. Tällöin on aina syytä tehdä vastaava tarkistus myös palvelimessa. JavaScriptin käytöllä voidaan helpottaa etenkin niiden ihmisten toimintaa, joilla on muistin ja hahmottamisen häiriöitä. Jos palautteen saa heti, kun on tehnyt virheen, on helpompi käsitellä ja korjata se.

Seuraavassa on pieni alkeisesimerkki. Siinä on lomake, jossa on kaksi syöttökenttää, joihin on tarkoitus kirjoittaa kokonaisluvut. Lomakkeen lähettäminen sitten saa aikaan, että palvelimessa toimiva ohjelma laskee lukujen tulon ja lähettää vastauksen selaimelle. Jos syöttötiedot eivät olekaan lukuja, kyseinen ohjelma antaa virheilmoituksen. Voinet kuvitella, että realistisessa esimerkissä, jossa lomake on laaja, syntyy helposti ongelmia, kun käyttäjä ei hahmota, missä hän teki virheen ja kun hänen on vaikea palata ajattelemaan kohtaa, jonka jo luuli hoitaneensa.

Esimerkissämme on asia pyritty hoitamaan JavaScriptillä. Jos kenttään on kirjoitettu vaikkapa sana "kaksi", niin painettaessa tab-näppääintä tai napsautettaessa seuraavaa kenttää tai yritettäessä muutoin siirtyä pois virheellisen syötteen sisältävään kenttään tulostuu virheilmoitus (ja kursori jää kyseiseen kenttään). Teknisesti sanottuna tässä käytetään onblur-määritettä.

Tällä lomakkeella voi laskea kahden luvun tulon:
Luku:
Toinen luku:

Lisämukavuutta voi saada, jos JavaScriptillä onnistutaan kokonaan estämään muiden kuin numeroiden kirjoittaminen kyseisiin kenttiin. Tässä voidaan käyttää onkeypress-määritettä. Seuraava muunnelma pyrkii tekemään niin:

Tällä lomakkeella voi laskea kahden luvun tulon:
Luku:
Toinen luku:

Paljonko kannattaa nähdä vaivaa?

Mitä parempi virheenkäsittely halutaan tehdä, sitä enemmän koodia tarvitaan ja sitä suurempi on mahdollisuus tehdä virheitä virheenkäsittelyssä. Lisäksi kannattaa pohtia seuraavia asioita:

Joka tapauksessa on syytä kiinnittää huomiota siihen, että ennen syöttökenttiä on riittävät sanalliset selitykset siitä, millaista syöttötietoa tulee kirjoittaa ja missä muodossa. Tämä on usein olennaisempaa kuin pyrkiä teknisin keinoin auttamaan käyttäjää välttämään virheitä.

Miten JavaScript aiheuttaa esteitä?

Seuraavassa on kaksi tyypillistä tilannetta, joissa JavaScriptin ajattelematon käyttö aiheuttaa vakavan esteellisyyden.

"Suunnistuksen" jättäminen JavaScriptistä riippuvaksi

Seuraavassa on JavaScriptillä tehty alasvetovalikko, jolla päästään eri sivuille:

Jos kuitenkin selaimessa ei ole JavaScript-tukea käytössä, seurauksena on valikko, josta voi valita ihan mitä vain ilman, että mitään tapahtuu. Se vastaa sitä, miten seuraava lomake on toimimaton, vaikka JavaScript olisi käytössä:

JavaScript-tuen puute voi johtua siitä, että käytössä on erikoisselain, joka ei lainkaan tue JavaScriptiä. Lisäksi monet kääntävät JavaScript-tuen pois käytöstä selaimessaan, koska niin usein JavaSciptiä käytetään häiritseviin toimintoihin kuten uusien ikkunoiden avaamiseen tai koska JavaScriptiä pidetään tietoturvaongelmiana.

JavaScript-pohjainen "suunnistusvalikko" onkin yleensä parasta korvata linkkilistalla, kuten sellaisella, joka on jäljempänä Lisätietoja-kohdassa. Jos kuitenkin halutaan käyttää alasvetovalikkoa, on kaksi vaihtoehtoa:

  1. Lisätään form-elementtiin action-määrite, joka viittaa palvelimessa toimivaan yksinkertaiseen ohjelmaan, joka tekee uudelleenohjauksen annetulle sivulle. Lisäksi tarvitaan elementin sisälle input type="submit" -elementti, joka kuitenkin voi olla noscript-elementin sisällä.
  2. Tuotetaan yllä oleva form-elementti dynaamisesti document.write()-metodilla ja käytetään noscript-elementtiä, jonka sisällä on ilman JavaScriptiä toimiva vaihtoehto (käytännössä linkkilista).

JavaScriptillä tehty "linkki"

Usein halutaan, että linkin seuraaminen aiheuttaa sivun avautumisen uuteen ikkunaan, vieläpä niin, että ikkuna saa jotkin halutut ominaisuudet kuten koon. Tämä ei yleensä ole järkevää, mutta jos niin tehdään, on asia syytä hoitaa niin, että linkki toimii myös ilman JavaScriptiä.

Eräs toimiva menettely on seuraavanlainen:
<a href="http://www.w3.org/" target="WWW" onclick=
"window.open('','WWW','width=150,height=150,resizable=1');" >W3C</a>

Tämä näyttää seuraavanlaiselta: W3C

Erona näennäisesti hiukan yksinkertaisempaan ratkaisuun
<a href="#" onclick="window.open('http://www.w3.org/','WWW','width=150,height=150,resizable=1'); return false">W3C</a>
on se, että tällaisella tempulla tehty "linkki" (W3C) ei toimi lainkaan, jos JavaScript ei ole käytössä. Mikä pahempaa, se todennäköisesti näyttää linkiltä (W3C), ja sen seuraaminen saattaa aiheuttaa esimerkiksi siirtymisen sen sivun alkuun, jolla linkki on.

Lisätietoja