# Code ausführen beim Browser schließen / Alternative zu stop?



## Magnus (28. Sep 2007)

Hallo,
folgendes Szenario:
Ich habe Word in ein (signiertes) Applet eingebettet (per SWT OLEFrame). Per Button im Applet kann das bearbeitete Dokument gespeichert werden. Soweit alles in Ordnung.
Lieber wäre es mir, wenn beim Schließen des Browsers automatisch gespeichert würde. Ich habe gehofft, dies wäre in der stop()-Methode möglich, klappt aber leider nicht. (speichern kann man mit OLEClientSite.save(File file, boolean b), bei diesem Einzeiler sollte das Problem also nicht liegen).
Alternativ habe ich versucht mit Javascript beim Browserbeenden (onunload) eine Appletmethode aufzurufen, scheint aber auch zu spät zu starten.
Hat jemand vielleicht eine Idee, wie ich meinen Speicheraufruf "rechtzeitig" (auf jeden Fall vor Applet.stop()) beim Schließen des Browsers ausführen kann?
Gruß Magnus


----------



## L-ectron-X (28. Sep 2007)

Einige Browser "vergessen" den von Sun vorgesehenen stop()-Aufruf vor der Ausführung der destroy()-Methode beim Schließen des Browsers. Daher musst du dafür die destroy()-Methode aus Applet überschreiben, die wird beim Schließen von jedem Browsers ausgeführt.


----------



## Magnus (2. Okt 2007)

Habe vergessen zu erwähnen, dass ich das auch ausprobiert habe. In beiden Fällen wird der Code auch abgearbeitet (ist anhand der Ausgaben in der Java-Console zu sehen), aber es funktioniert leider nicht.
Laut Ausgaben ist die OleClientSite auch noch nicht "disposed" zu diesem Zeitpunkt. Seltsamerweise ist sie aber immer als "dirty" markiert, selbst wenn man das Dokument nicht verändert hat (vor dem Browser beenden ist das nicht so).
Trotzdem danke für die Antwort!
Magnus


----------



## maki (2. Okt 2007)

destroy() kannste vergessen, das wird nicht immer aufgerufen, und selbst wenn, ist es meistens nutzlos...


----------



## L-ectron-X (2. Okt 2007)

Na klar... :roll: 
Warum soll es nutzlos sein? Er soll sie ja auch nicht einfach nur aufrufen... die Methode ist doch von hause aus leer.
Er soll sie überschreiben. Dann wird sie auch sinnvoll ausgeführt. Immer und von jedem Browser.


----------



## maki (2. Okt 2007)

Pardon.. hab das mit finalize() verwechselt.


----------

