Bieži vien gribas darīt šādi:
<a href="javascript:ShowPic('image1.jpg')">skatīt bildi</a>
Tas ir, lai parādītu bildīti, izsaucam JavaScript funkciju, kurai parametros nododam attēla nosaukumu. Risinājums labi darbosies itin daudziem lietotājiem, tomēr viegli pārliecināties, ka rezultāts nebūs sasniegts, kad pārlūkā atslēgsim JavaScript atbalstu. Turklāt – javascript: lietošana hipersaites href atribūta vērtībā ir nekorekta – šajā atribūtā jānorāda URI shēmai atbilstoša vērtība. javascript: ir pseidoprotokols, līdzīgi kā about: vai chrome:.
Daži problēmu risinātu šādi:
<a href="#" onclick="ShowPic('image1.jpg')">skatīt bildi</a>
Diemžēl šāds risinājums vēl joprojām nepalīdzēs gadījumā, kad pārlūkā atslēgsim JavaScript atbalstu. Mēģināsim lietot <a> birku tam, kam tā domāta – saites norādīšanai. To varam izdarīt šādi
<a href="image1.jpg" onclick="ShowPic('image1.jpg');return false">skatīt bildi</a>
Nu jau izskatās itin labi. Tie pārlūki, kas neatbalsta JavaScript vai arī kam izslēgts javascript, atvērs pašu bildi, bet pārējie izpildīs funkciju ShowPic(), kas droši vien parāda attēlu citā un skaistākā veidā. Papildus pievienotais “return false” nodrošina to, ka pēc funkcijas izpildes notikums “ir ticis uzklikšķināts uz hipersaites” tiek atcelts, tādējādi pārlūks neatvērs adresi, kas aprakstīta href atribūtā.
Tomēr – ak vai, ak vai – šāds dokuments, kam DOCTYPE norādīts XHTML 1.0 Strict negrib "validēties" Tā kā XHTML standarts paredz striktu nodalījumu starp dokumenta saturu (pats XHTML), tā izkārtojumu (CSS stili) un prezentāciju (piekārtotie skripti), tad atribūts onclick vairs nav pieļaujams A elementam.
Tāpēc darām šādi: pašā XHTML dokumentā iekļaujam tikai šādu saiti:
<a href="image1.jpg" class="PictureLink">skatīt bildi</a>
Savukārt dokumentam piekārtotajā skriptu failā piesaistām šim elementam notikumu ķērāju:
//pēc dokumenta pilnas ielādes, izsauc funkciju, kas "salabo" saites document.body.onload=InitPictureLinks;//funkcija iziet cauri visām dokumenta hipersaitēm un vajadzīgās no tām "salabo" function InitPictureLinks(){ var oLinks; //šī būs visu hipersaišu kolekcija
//izmanto DOM funkciju, lai nolasītu visas hipersaites oLinks = document.getElementsByTagName("A");
for (var i=0;i<olinks .length;i++){ //apstrādā tikai tos A elementus, kuru klase ir PictureLink if (oLinks[i].className=="PictureLink") addLink(oLinks[i];) } }
//piesaista notikumu ķērāju "onclick". //pēc klikšķa tiek izsaukta funkcija ShowPic, parametros //nododot href atribūtā uzstādīto vērtību un atgriezts false, //lai atceltu klikšķa notikumu function addLink(opLink){ opLink.onclick = function(){ShowPic(opLink.href);return false}; }