- Ich mache eine Schreibanwendung. Benutzer können die App öffnen, etwas Text schreiben, ihre Arbeit speichern usw.
- Ich versuche es so zu machen, dass der Benutzer durch Klicken auf die Schaltfläche
window close
aufgefordert wird, (a) seine Arbeit zu speichern (falls erforderlich) oder (b) Hör einfach auf. - Ich versuche
window.beforeunload
zu verwenden, um dies zu erreichen, aber finde, dass ich in einer Schleife stecke, wo der Versuch, "aufzuhören", die gleiche Aufforderung ad infinitum erscheint.
Hier einige Code:Aufforderung zum Speichern/Beenden vor dem Schließen des Fensters
windowCloseCheck() {
window.onbeforeunload = function(e) {
e.returnValue = false;
// window.alert('try to close me');
if(file.isUnsaved() || file.hasChanged()) {
// prompt - save or just quit?
file.fileWarning('You have unsaveeed work.', 'Save', 'Quit', function(){
// OPTION A - save
file.save();
}, function() {
// OPTION B: Quit.
ipcRenderer.send('quitter')
})
}
else {
// file is saved and no new work has been done:
ipcRenderer.send('quitter')
}
windowCloseCheck
aufgerufen wird, wenn die Anwendungs-Setup ist, für ein Ereignis-Listener initiiert das Fenster zu schließen. Meine Bedingung überprüft, ob die Datei nicht gesichert ist oder sich vom Original geändert hat.
fileWarning
ist eine Funktion, die nur das Elektronendialogfeld umschließt, so dass ein Popup mit zwei Auswahlmöglichkeiten und entsprechenden Funktionen für jede Wahl erscheint. Der Rest des Codes ist available, wenn ich (wahrscheinlich) notwendige Informationen weglassen werde. Würde mich freuen zu klären, ob ich nicht ganz klar bin.
Dies ist bei weitem der beste Weg, dieses Problem anzugehen. Ich habe seit ein paar Tagen verschiedene Ansätze ausprobiert und es gibt immer etwas, das umgangen werden muss. Dieser Ansatz funktioniert jedoch perfekt und es ist so ziemlich die einzige Möglichkeit, dies ohne Probleme zu tun ... zumindest in der Electron Version 1.4.15 – Darthur