17. februar 2003 - 11:36Der er
10 kommentarer og 1 løsning
<body onFocusOut="self.close();">
Hej
Jeg har et popup-vindue, hvor jeg har prøvet følgende: <body onBlur="self.close();"> Og <body onFocusOut="self.close();">
Meningen var, at popup-vinduet skulle lukke sig selv, hvis brugeren klikkede uden for det (altså hvis brugeren klikkede på det bagvedliggende vindue, som skabte popup-vinduet). Men problemet er, at hvis man klikker på teksten, et billede eller andet i popup-vinduet, så bliver det også lukket, og det var ikke meningen. Det skulle nemlig kun lukke sig selv, hvis brugeren som sagt klikkede uden for popup-vinduet.
onblur er den rette event, men du er nødt til at afbryde den hvis der klikkes i vinduet.
Den er lidt bøvlet, men nedenstående virker vist. <script> var allowClose=true; function clickBody() { allowClose=false; } function tryClose() { if (allowClose) { window.close(); } } function closeWindow() { allowClose=true; window.setTimeout("tryClose()",1000); }
function resetClose() { allowClose=false; } </script> <body onblur="closeWindow()" onclick="clickBody()" onfocus="resetClose()">
Det er kun ca. halvdelen af gangene, hvor den mister fokuset, at den lukker sig selv ned. Kan dette ikke udbygges lidt - ellers ser det ud til at virke meget godt :-)
Hmm - jeg får den kun selv til at "fejle" hvis jeg klikker forholdsvis hurtigt frem og tilbage, så det ene sekund ikke er gået.
Muligvis med: <script> var allowClose=true; var toClose=false; function clickBody() { allowClose=false; if (toClose) { window.clearTimeout(toClose); toClose=false; } } function tryClose() { if (allowClose) { window.close(); } } function closeWindow() { allowClose=true; toClose=window.setTimeout("tryClose()",1000); }
function resetClose() { allowClose=false; if (toClose) { window.clearTimeout(toClose); toClose=false; } } </script> <body onblur="closeWindow()" onclick="clickBody()" onfocus="resetClose()">
Jeg kan ikke få det til at funke. Hvis jeg klikker uden for popup-vinduet, så er der 50% chance for at den lukker sig selv. Hvis ikke den lukker sig selv, og jeg finder vinduet på bundlininen og klikker på det, så lukkes det.
Jeg prøvede med følgende <HTML> <script> var allowClose=true; var toClose=false; function clickBody() { allowClose=false; if (toClose) { window.clearTimeout(toClose); toClose=false; } } function tryClose() { if (allowClose) { window.close(); } } function closeWindow() { allowClose=true; toClose=window.setTimeout("tryClose()",500); }
function resetClose() { allowClose=false; if (toClose) { window.clearTimeout(toClose); toClose=false; } } </script> <body onblur="closeWindow()" onclick="clickBody()" onfocus="resetClose()"> <p>Lidt tekst, og andet</p> <input type="text" onblur="closeWindow()"> </BODY> </HTML>
Da jeg kom i tanke om at onblur jo ikke "bubbler" op til body fra en input. Så man er nødt til at have onblur på alle input og lign. Almindelige tags er ligegyldige, da de ikke kan modtage fokus.
Men ellers kan jeg altså ikke få den til at fejle. Den lukker smukt. Jeg satte ventetiden ned til et halvt sekund, så den forsvinder lidt hurtigere.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.