19. oktober 2005 - 08:29Der er
18 kommentarer og 2 løsninger
Confirm inden vinduet lukkes
Hej,
Jeg har forsøgt med lidt kode, der skal give brugeren en lille påmindelse inden et vindue lukkes. Dette virker dog ikke helt efter hensigten.
Kode-snas function CancelWizard() { if (confirm('Luk ikke vinduet på den måde!\n\Ønsker du alligevel at forsætte?')); }
<body onBeforeUnLoad="CancelWizard();">
Sådan skal det bruges. 1) Brugeren ønsker at lukke et "popup" vindue, og klikker på "krydset" 2) Så kommer der en Confirm-box 3) Hvis brugeren vælger at annullere, lukkes vinduet ikke.
Problemet er pt. at selvom brugeren annullere, lukkes vinduet alligevel. Kan det forhindres?
Har selv fiflet lidt med det engang. Når brugeren har trykket "luk", så er BeforeUnload aktiveret, og dermed en absolut Unload.
Men jeg gør det, at jeg vælger at spørge om brugere er sikker på at han vil lukke vinduet. Hvis der trykkes annullér, så reloades siden bare med window.open, for den kører jo hele onBeforeUnload rutinen.
Der er en løsning, som du lige kan lege med, mens jeg lige finder den rutine jeg brugte. Bare for at se, om den var speciel. Jeg kan bare huske, at det virker :) Nå, men her er et alternativ:
<script type="text/javascript"> function CancelWizard() { event.returnValue = "Vinduet bliver lukket"; } </script>
function CancelWizard() { if (confirm("Lukke?")) { alert ("Der bliver lukket..."); } else { window.open("den_side_du_vil_genåbne.htm"); } }
alert-linjen kan du bare slette. Det var bare for at illustrere, at der bliver lukket. Men selv om du sletter alert-linje, bliver der bare lukket alligevel...
Koden ser således ud: <body onBlur="this.focus();" onBeforeUnLoad="CancelWizard();">
function CancelWizard() { if (confirm("Luk ikke vinduet på den måde!\n\Ønsker du alligevel at forsætte?")) { } else { window.open("den_side_du_vil_genåbne.htm"); } }
Kan man i stedet for window.open("den_side_du_vil_genåbne.htm"); ikke lave noget ala return false. Således at der ikke sker noget reload eller ændring det eksisterende indhold i vinduet?
Det mener jeg ikke man kan. Unload-event'en er "trigget".
Ellers skal du bruge event-handleren:
<html> <head><script type="text/javascript"> function CancelWizard() { event.returnValue = "Vinduet bliver lukket"; } </script> <title>Untitled</title> </head> <body onBlur="this.focus();" onBeforeUnLoad="CancelWizard();"> </body> </html>
Synes godt om
Ny brugerNybegynder
Din løsning...
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.