Ich will beim verlassen einer bestimmten Seite noch Werte in eine MySQL Datenbank schreiben. Wie stell ich dass an. Gefunden habe ich darüber nicht. Ich weiß aber dass es solche Möglichkeiten window.close gibt.
Ich hoffe mir kann jemand helfen ob nun mit javascript oder php. Hauptsache es funktioniert! Danke schon mal im voraus!

Das geht! Es gibt zwar keine Garantie dafür, aber Du kannst bei dem Ereignis window.onclose noch eine Serverkontaktierung via Ajax losschicken.
Also ungefähr so (mit dem prototype framework (http://www.prototypejs.org):
window.onclose = function() {
new Ajax.Request('onclose.php');
}
Wie gesagt, das funktioniert häufig - aber nicht immer. Ich hab's leider nie genauer untersucht. Vermute das hängt mit browserinternen Implementierungen zusammen, ob der Request noch ausgeführt wird oder nicht.
> Wie gesagt, das funktioniert häufig - aber nicht immer.
Richtig - und damit ist diese Methode ungeeignet.
clanny am 28. August 2008 08:38 ob es unnütz ist ist eine frage des anwendungszwecks.
mal abgesehen davon, dass ich von "unnütz" nichts geschrieben habe: Wenn eine Anwendung darauf angewiesen ist, irgendwelche Aktionen beim Verlassen einer Seite durchzuführen, ist das Konzept kaputt.
clanny am 28. August 2008 12:20 Richtig. Aber wenn die Anwendung nicht darauf angewiesen ist (z.B. serverseitiges Speichern von Benutzereinstellungen), ist es durchaus einen Versuch wert.
Richtig! Das Event onBeforeUnload funktioniert tatsächlich. Sogar unter Firefox. Wie clanny schon getippt hat, kannst du in Kombination mit Ajax dann noch dein PHP-Skript absetzen. Wie sehr darunter die Usability leidet ist eine andere Frage. Deine sollte damit aber gelöst sein.
Na bin ich froh, dass mein Opera so einen Unsinn nicht unterstützt - und das das nur bei aktiviertem JS funktioniert, brauch ja nicht zu erwähnt werden ...
Wenn Du ein bearbeitetes Word-Dokument schließt und Word fragt "Möchten Sie die Änderungen speichern?" - ist das Unsinn?
Bei klassischen Web 1.0 Informationsübertragungen kann ich Deine Aussage unterschreiben.