Hej alle sammen
Jeg er pt igang med at kode et større system hvor vi blandt andet
benytter JSP og en smule javascript.
Vi er rendt ind i det problem, at vi har problemer med at få
lukket et popup vindue under nogle særlige omstændigheder.
Systemet skal opføre sig modalt, selvom det ikke har været muligt
for os at kode det helt sådan i JSP.
Når en bruger klikker sig ind på et menupunkt og udfører nogle
handlinger i et popup vindue kan det hænde at brugere
glemmer/undlader at lukke popup vinduet inden han klikker på et
andet menupunkt i grundvinduet. I den forbindelse sørger vi for
at lave endSession på de Java Enterprise Beans som har været
aktive i sessionen og nu ikke skal bruges, men vi skal også have
lukket popup vinduet.
Problemet er at når der klikkes på et nyt menupunkt, så vil
grundvinduet reloade. Det lader til at dette betyder, at
grundvinduet ikke længere "kender"/"husker" popup vinduet og
derfor ikke kan udføre close() funktionen på det.
Vores første problem bestod i, at vi ikke på forhånd kunne vide
om popup vinduet overhovedet havde været åbent. Derfor indsatte
vi kode i popup vinduet, der hver gang det åbnes tilføjer en
attribut til sessions objektet som vi blot kalder "Popup" og som
bliver sat til værdien "open". Hvis popupvinduet lukkes som det
burde fjernes attributten fra sessionen igen. Således blev det
muligt for os at lade grundvinduet teste på sessionsobjektet om
der fandtes en attribut med navnet "Popup". Gør der det, skal
grundvinduet sørge for at lukke popup vinduet.
Et eksempel kunne være:
<body onload=<%if(session.getAttribute("Popup") != null) {%>
popupWin.close();
<%}%>"startMovement('start','32')"
background="/ill/bagground/bgs_002.gif" link="Black"
bottommargin="0" topmargin=0 leftmargin=0 rightmargin="0"
bgcolor="White">
"popupWin" er så navnet på popupvinduet. Men det virker altså
ikke. Jo valideringen virker fint, men popupWin.close() bliver
ikke udført. Vi mener selv at dette næsten må skyldes, at
grundvinduet nok ikke aner hvad popupWin er, idet det jo bliver
reloaded. Desværre er det ikke muligt blot at lade popup vinduet
ligge som minimieret. For hvis brugeren skulle vende tilbage til
vinduet, vil alle bønner som vinduet bruger være fjernet fra
sessionen og et forsøg på at bruge popupvinduet vil resultere i
en systemfejl. Det er heller ikke muligt blot at undlade at
fjerne bønner fra sessionen da dette jo til sidst vil resultere i
performance problemer på serveren, idet der vil kunne være et
voldsomt stort antal instanser af diverse bønner.
Er der nogen som har ideer til, hvordan dette kan løses?
Tusinde hilsner
Puk