Window.onbeforeunload wie richtig eingesetzt?
Hi Leute,
eine Freundin von mir hat mich um Hilfe gebeten.
Sie ist gerade bei ihrer Diplomarbeit dran und ein Bekannter von ihr (der jetzt nicht mehr auffindbar ist
) hat ihr dafür eine Website programmiert mit einem Online-Fragebogen.
Wenn ein User jetzt mitten im Fragebogen auf den "zurück" Button des Browsers klickt, wird mittels Java die Funktion
aufgerufen und der User kann entscheiden ob er auf der Seite bleibt und weiter macht oder ob er die Seite verlassen möchte und die Daten gelöscht werden.
Wenn der User allderings auf den Button "weiter" klickt, der einfach zur nächsten Seite des Fragebogens führt, wird diese Funktion ebenso aufgerufen.
Dies soll aber nicht der Fall sein!
Das ganze wurde mit WordPress gemacht und diese Java Funktion wurde meines Erachtens nach von Hand nachgetragen im Quelltext.
Könnt ihr mir helfen wie ich das Problem beseitige?
Lieben Dank und schöne Tag!
Michael
eine Freundin von mir hat mich um Hilfe gebeten.
Sie ist gerade bei ihrer Diplomarbeit dran und ein Bekannter von ihr (der jetzt nicht mehr auffindbar ist
Wenn ein User jetzt mitten im Fragebogen auf den "zurück" Button des Browsers klickt, wird mittels Java die Funktion
window.onbeforeunload = function(){
return "Wenn Sie die Seite verlassen, werden die Daten gelöscht und Sie müssen von vorne beginnen!\n\nWollen Sie die Seite wirklich verlassen?";
}
aufgerufen und der User kann entscheiden ob er auf der Seite bleibt und weiter macht oder ob er die Seite verlassen möchte und die Daten gelöscht werden.
Wenn der User allderings auf den Button "weiter" klickt, der einfach zur nächsten Seite des Fragebogens führt, wird diese Funktion ebenso aufgerufen.
Dies soll aber nicht der Fall sein!
Das ganze wurde mit WordPress gemacht und diese Java Funktion wurde meines Erachtens nach von Hand nachgetragen im Quelltext.
Könnt ihr mir helfen wie ich das Problem beseitige?
Lieben Dank und schöne Tag!
Michael
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 155968
Url: https://administrator.de/forum/window-onbeforeunload-wie-richtig-eingesetzt-155968.html
Ausgedruckt am: 30.03.2025 um 14:03 Uhr
9 Kommentare
Neuester Kommentar
siehe: http://msdn.microsoft.com/en-us/library/ms536907%28VS.85%29.aspx unter 'To invoke'
Eine Lösung wäre: die Event Funktion zu überschreiben - entweder im Button mit onclick oder im Form mit onsubmit.
Eine Lösung wäre: die Event Funktion zu überschreiben - entweder im Button mit onclick oder im Form mit onsubmit.
window.onbeforeunload = function(e) {}
die Microsoft Seite auch schon davor aufgerufen gehabt, aber ich fang damit nicht so viel an
unter dem Punkt: 'To invoke' findest Du alle Ereignisse, welche das onbeforeunload Event auslösen - also NICHT NUR wenn die Seite verlassen wird.das 'e' in der Klammer bei 'function'
das e ist das Event, was immer mit übergeben wird. Dieses Event Objekt beinhaltet viele Informationen welche wichtig sein können zur Auswertung in der Funktion. Und Ja - in dem Fall kann man das e weglassen, da es nicht benötigt wird.Die Einfachste Lösung wäre dem Button 'Weiter' ein 'onclick' Attribut hinzu zufügen und darin die onbeforeunload Event-Funktion zu überschreiben
<input type="submit" name="" value="" onclick="window.onbeforeunload = function(e) {}" />
EDIT:
Bitte beachte, daß es sich um Javascript handelt - nicht um Java - das ist schon ein großer Unterschied.
Oder meinst du damit, dem 'weiter'-Button dadurch die Funktion zu "entreißen" mit dem Überschreiben der Funktion?
... genau. Da sich dieses Event auf das window Objekt bezieht - gilt es für die gesamte Seite und kann nicht für einzelne Elemente der Webseite definiert werden.Man könnte auch ein
window.onbeforeunload = null;
die Funktion ERNEUT aufrufen anstatt sie zu überschreiben
nein - die Funktion ist {} - also leer.Was ausgeführt wird ist eine simple Zuweisung - wie "x = 1". Bei den Javascript Events wird eine Funktion erwartet - schließlich muss der Browser (zB. bei einem Klick) etwas ausführen können.
man könnte es auch etwas anders schreiben:
function meineFunktion(e)
{
}
window.onbeforeunload = meineFunktion;