onUnload confirm

JavaScript

4 svar · 262 visningar · startad av pettsson

Medlem sedan jan. 20021 122 inlägg
Trådstart#1

Jag har en confirm i min onUnload på formulärsidor för att undvika att man glömmer att spara innan man går vidare. Men det funkar inte, jag har

<body onUnload="return confirm('Lämna?');">

En google-träff laddade om sidan om man tryckte på cancel, men det kommer ju att ladda om formuläret :l Tips?

Medlem sedan juni 2004533 inlägg
#2

Du kan inte stoppa eventet onunload.

Tänk bara hur det skulle missbrukas. Du skulle få upp en massa fönster med reklam som har onunload="return false", så skulle det inte gå att stänga dem...

Ifall du vill hindra användaren att byta sida så måste du stoppa det tidigare, till exempel med onclick på en länk.

Medlem sedan jan. 20021 122 inlägg
#3

Hm... Det har du ju förstås rätt i. Då får man alltså säga till användarna att om de trycker backspace så får de skylla sig själva

Medlem sedan nov. 200013 890 inlägg
#4

Du kan ju alltid spara informationen innan användaren lämnar sidan. Här är lite fulkod:

<script>
function q(){
	var a=confirm("Vill du spara ändringarna innan du lämnar sidan?");
	if(a){
		f.submit();
		alert('Informationen sparas')
	}
}
</script>

<body onunload="q()">
	<form id="f"></form>
	<a href="sidan2.html">Gå till en anna sida</a>
</body>

Det är inte någon 100%-ig lösning men den funkar bra så länge användaren inte stänger fönstret.

Medlem sedan juni 2004533 inlägg
#5

För att posta formuläret så måste det ju finnas en sida att posta det till. Ifall fönstret håller på att stängas så fungerar det ju inte att posta formuläret till samma fönster.

Testa att öppna ett nytt fönster och posta formuläret dit. Sidan som tar emot formuläret kan ju stänga fönstret sedan.

window.open('','kaffesump','width=100,height=100');
document.f.target='kaffesump';
document.f.submit();
258 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)