molily: onbeforeunload, personalisierter confirm dialog / form submit

Beitrag lesen

Hallo,

da hast du beforeunload missverstanden. Das einzige, was du tun kannst, ist im beforeunload einen String zurückgeben. Der wird dem Benutzer dann präsentiert in einem Dialog, dessen Aussehen gänzlich vom Browser bestimmt wird. In diesem Dialog kann der Nutzer i.d.R. nur »Seite verlassen« oder »Auf der Seite bleiben« wählen. Darauf hast du keinen Einfluss. Du kannst hier keinen eigenen Event-Handler schreiben, der ein Element einblendet - gut, das kannst du natürlich, aber damit kannst du den Browser nicht davon abhalten, die Seite zu verlassen. Der Dialog, den der Browser anzeigt, bleibt immer derselbe. Da kannst darin keine weiteren Buttons einfügen und mit Ajax-Funktionalität hinterlegen.

Du musst dir also etwas anderes einfallen lassen. Du könntest beforeunload mit unload kombinieren und im unload-Handler ein confirm() unterbringen. Das wird gefeuert, wenn der Benutzer »Seite verlassen« gewählt hat. Damit könntest du abfragen, ob der Benutzer die Eingaben speichern will, und im positiven Falle einen (synchronen) HTTP-Request absenden. Es ist allerdings nicht garantiert, dass der auch ankommt, schließlich wird gerade die Seite geschlossen und das JavaScript kurz darauf angehalten.

Mathias