Tehnika Krstarice > Programiranje > JavaScript - "Defanzivna filozofija"

JavaScript - "Defanzivna filozofija"

31.10.2001.

Kada se bavite programiranjem, trebalo bi da uvek imate na umu tzv. "defanzivno programiranje", a poželjno bi bilo i da prihvatite ovu filozofiju kada pišete JavaScript skriptove. U skladu sa ovom filozofijom, nikada se ne treba oslanjati na sistem, u tom smislu da će uraditi stvari za vas. Umesto toga, npr. podesite potrebne varijable svojeručno, i to pre ili nakon dešavanja određenog događaja. Da bi ova priča bila jasnija, pogledaćemo i primer. U narednim redovima imamo funkciju onPageComplete(), koja se koristi za kreiranje dinamičkog šablona za štampanje:

function onPageComplete() {
if (event.contentOverflow) {
 document.all("layoutrect" + poslStrana).onlayoutcomplete
 = null;

newHTML  = "<IE:DEVICERECT ID='devicerect"
           + (poslStrana + 1)
           +"' MEDIA='print' CLASS='masterstyle'>";
newHTML += "<IE:LAYOUTRECT ID='layoutrect"
           + (poslStrana + 1)
           + "' ONLAYOUTCOMPLETE
           ='onPageComplete()'NEXTRECT='layoutrect"
           + (poslStrana + 2) 
           + "'  CLASS='contentstyle'/>";
newHTML += "</IE:DEVICERECT>";
 devicecontainer.insertAdjacentHTML
 ("beforeEnd", newHTML);
 poslStrana++;
  }
}

Ubacite ovaj kod u HTML stranicu i isprobajte je u browser-u. Funkcioniše upravo kako smo želeli. Sada ćemo za promenu izostaviti prvu liniju unutar IF uslova, i dobićemo novu funkciju onPageComplete():

function onPageComplete() {
 if (event.contentOverflow) {
    {ovde je bila linija koju smo izbacili}

newHTML  = "<IE:DEVICERECT ID='devicerect"
           + (poslStrana + 1) 
           + "' MEDIA='print' CLASS='masterstyle'>";
newHTML += "<IE:LAYOUTRECT ID='layoutrect"
           + (poslStrana + 1)
           + "' ONLAYOUTCOMPLETE
           ='onPageComplete()' NEXTRECT='layoutrect"
           +(poslStrana + 2)
           + "'  CLASS='contentstyle'/>";
newHTML += "</IE:DEVICERECT>";
  devicecontainer.insertAdjacentHTML
  ("beforeEnd", newHTML);
  poslStrana++;
  }
}

Ubacite kod u web stranicu i isprobajte je. Ono što ćete na kraju dobiti je - prazna stranica. Razlog je dešavanje dodatnog događaja onlayoutcomplete prethodne stranice, koju smo već odštampali. Prvom linijom funkcije onPageComplete() podešavali smo vrednost null pre samog štampanja sledeće stranice:

document.all("layoutrect" + poslStrana).onlayoutcomplete
= null;

Preporučite ovaj članak

Članak još uvek nije ocenjen.