Hyppää sisältöön, linkkilistaan.

Arkisto Tammikuu 2005 7. päivä

Estä lähetä-napin tuplaklikkaus

Ohjelmointi, perjantaina 7.1.2005,

Lähetä-napin tuplaklikkauserheen voi estää helposti javascriptillä, vaikkei tosin ongelmitta.

Tilanne on tämä: käyttäjä haluaisi lähettää palautetta HTML-lomakkeen avulla ylläpidolle käsiteltäväksi.

Mutta nettipalvelun ylläpitäjä onkin saita kitupiikki, joka on laittanut sivunsa pyörimään viisi vuotta vanhalle Pentium-raudalle. Nettisivuista on aikojen saatossa tullut suosittuja eikä Pentium-parka pysty enää palvelemaan sivupyyntöjään suoltavia asiakkaitaan viiveettä (viipeettä?). Kun ei mitään näytä tapahtuvan lähetä-painikkeen klikkauksen jälkeen, klikkaa käyttäjä painiketta uudestaan — ja uudestaan. Käyttäjä ei vain tiedä, että jokainen klikkaus saa aikaan uuden lähetyksen. Ylläpitäjä saakin aikamoisen kasan sun sivut rokkaa!!11 -viestejä. Todellisuudessa käyttäjälle näkyvä tapahtumattomuus johtuu vain palvelinraudan hitaudesta.

Ylläpitäjä toivoisikin jotain helppoa tapaa estää lähetä-napin moninkertaiset painallukset. Koska ylläpitäjä on kitsas rahan suhteen, ovat palvelimella suoritettavat komentojonot poissa kuvioista. Jäljelle jääkin vain javascript, sekä rohkeille VBScript.

Itse toteutus

Polulleni osui Jean-Marc Fontaine’in blogikirjoitus (älkää kielestä välittäkö, katsokaa javascriptiä). Koska sivuilla ei ollut kokeiltavaa esimerkkiä, tein sellaisen. Lisäsin siihen myös yleisesti nähdyn hyväksy käyttöehdot -litanian. Eihän ilman sellaista lomake ole mitään.

Kokeiltava esimerkki.

Aina kun puhutaan javascriptistä täytyy muistaa myös sen puuttuminen. Kaikkien nettisivujen pitäisi toimia myös ilman skriptausta. Jos oheista esimerkkiä käyttää ilman javascriptiä, ei tuplaklikkauksen estokaan toimi. Ongelman voi tosin kiertää luomalla lähetä-napin sivulle javascriptillä:

document.write(
  '<input type=\"submit\" value=\"Lähetä\">'
);
    

Tällöin toiminnallisuus on tietenkin tekstiselaajien ulottumattomissa, mitä pidetään yleisesti tuomittavana. Pekka Pihistäjän tulisikin investoida web-tilaan, jossa pystyy ajamaan palvelinskriptejä. Näin kaikki prosessointi tehtäisiin palvelimella, jolla pyörivän skriptin pystyisi myös ohjelmoimaan huomioimaan useammat peräkkäiset lähetykset.

Palvelinskriptaus onkin käytännössä pakollinen ominaisuus, sillä ilman sitä ei lomakkeella voi tehdä juuri mitään. Ainoa käyttökelpoinen toiminto lienee mailto: mikä sekin on roskapostirobottien takia monelta pannassa.

Arkisto

Copyright © 2004–2005 Lauri Seppänen. Kommentointi HaloScan.