ich weiß, dass es Hunderte von Fragen wie: "Wie kann ich schließen Ereignis in Elektron" oder so ähnlich.
Nach der Implementierung einer Bestätigungsbox (Elektron Nachricht Box) im beforeunload
Event konnte ich meine App schließen und das Close Event abbrechen. Da die Entwickler-Tools immer offen sind, habe ich nicht erkennen, dass es nicht funktioniert, während die Entwickler-Tools geschlossen sind ...Bestätigung vorunload in Elektron
window.onbeforeunload = e =>
{
// show a message box with "save", "don't save", and "cancel" button
let warning = remote.dialog.showMessageBox(...)
switch(warning)
{
case 0:
console.log("save");
return;
case 1:
console.log("don't save");
return;
case 2:
console.log("cancel");
return false;
// e.returnValue = "false";
// e.returnValue = false;
}
};
Also, wenn die Entwickler-Tools geöffnet sind, kann ich die App schließen mit Speichern, ohne zu speichern und das Ereignis abzubrechen.
Wenn die Dev-Tools geschlossen sind, funktioniert der Cancel-Button nicht mehr.
Btw .:
window.onbeforeunload = e =>
{
return false;
alert("foo");
};
wird das unmittelbare Ereignis abbrechen und offensichtlich würde die Meldung nicht mehr anzeigen (spielt keine Rolle, ob Entwickler-Tools offen oder geschlossen sind)
window.onbeforeunload = e =>
{
alert("foo");
return false;
};
die annullieren Schließen Sie das Ereignis nach dem Drücken von OK, wenn die Dev-Tools geöffnet sind, und schließen Sie die App nach dem Drücken von OK, wenn die Dev-Tools geschlossen sind.
Absichtlich verwende ich die synchrone API des Meldungsfelds und whi le ich schreibe diese Frage ich fand heraus, dass eine App mit zwei Fenstern (new remote.BrowserWindow()
) wird genau wie mit den Dev-Tools verhalten.
Hat jemand eine Idee, wie ich dieses Problem lösen kann?
Vielen Dank im Voraus
Es sieht so aus, als ob Sie auf ein [bekanntes Problem in Electron] (https://github.com/electron/electron/issues/7977) stoßen. – FlyingPiMonster