DirectoryInfo aplauziens

Iedomājamies situāciju – rakstījām savu mūziciņu kompaktdiskā. CD rakstītājs (pieņemu, ka burnatonce) paziņo, ka šī failsistēma neatbalsta tik garus nosaukumus. Failu nosaukumi tiek apgriezti līdz zināmam garumam, piemēram, 52 simboliem. Dažādu sakritību rezultātā tieši 52. simbols direkotrijas nosaukumā ir atstarpe (0x20). Līdz ar to burnatonce veiksmīgi izveido direktoriju "d:\direktorijasnosaukums " (pievērst uzmanību atstarpes simbolam nosaukuma beigās).

Pēc tam darbinām šādu kodu:

Dim oDir As New IO.DirectoryInfo("d:\direktorijasnosaukums ")
oDir.GetDirectories()

… un, protams, nobeidzamies ar kļūdu, jo direktorija neesot atrodama. Ielūkojoties oDir objekta atribūtu sarakstā, redzams, ka FullName atribūtā ir pazudusi atstarpe nosaukuma beigās. Līdz ar to vairs neizdodas veikt nekādas darbības ar šo objektu.

Tā, lūk, ir ar .Net

Subst

Kā izrādās, jau kopš DOS laikiem ir pieejama shell komanda, kas saucas subst. Ar tās palīdzību iespējams izveidot virtuālu disku, kurš patiesībā atbilst kādam fiziskā diska katalogam.

Piemēram, veidojam jaunu disku N:, kas norādīs uz Microsoft .net framework pamatkatalogu.

subst N: C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322

Viena pati komanda subst bez parametriem parāda visu virtuālo disku sarakstu, sintakse subst Drive: /D paredzēta virtuālā diska dzēšanai

UzKlikšķa

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}; }