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;
Pratite Krstaricu na www.krstarica.com