<script language="javascript"> function funktion_nimi(){window.location="http://www.google.fi";} </script> <a href onClick="funktion_nimi();">siirry googleen</a>
Minkä takia tämä ei toimi? Jos kutsun tuota funktiota suoraan javascript koodista,sivu siirtyy googleen, niinkuin pitää.
Jos teen esim. näin:
<script language="javascript"> function funktion_nimi(){confirm("Oletko varma?")} </script> <a href onClick="funktion_nimi();">siirry googleen</a>
...niin tuo confirm ikkuna kyllä tulee näkyviin. Ja kyllä tuo window.location:kin toimii, jos sen laittaa suoraan suoritettavaksi, eikä function sisään.
Eikö tuota window.locationia voi käyttää enää sivun lataamisen jälkeen? Jos ei, niin millä tuon voisi sitten korvata. Ideahan ei siis ole toimia vain linkkinä, eli pelkkä linkki ei kelpaa. Tuosta esimerkistä nyt on karsittu turhat pois.
<html> <script language="javascript"> function funktion_nimi(){window.location="http://www.google.fi";} </script> <a href="#" onClick="funktion_nimi();return false;">siirry googleen</a> </html>
Lisäsin tuollaisen tyhjän ankkuriviittauksen ja return falsen. Jälkimmäisellä on merkitystä jos funktio voi palauttaa kontrollin tänne. Silloin false kertoo selaimelle, että klikatun kohteen tavanomaista toimintoa ei toteuteta. Jos funktio ei voi palata (kuten tässä), ei sillä oikeastaan ole merkitystä.
Muistaakseni tämä on kaanonin mukainen tapa. Pitääpä tarkistaa tässä illalla vielä kirjasta, josko meni ihan taiteen mukaan. Firefoxilla testattu toimivaksi.
Aihe on jo aika vanha, joten et voi enää vastata siihen.