Comment intercepter l'événement en cliquant sur la fenêtre d'application du bouton fermer dans l'électronique app
Je voulez attraper l'événement en cliquant sur la fenêtre d'application du bouton fermer dans l'électronique app.
Je suis en train de développer des Électrons application pour Mac OSX.
Je veux cacher la fenêtre d'application, de ne pas mettre fin à l'application lorsque l'utilisateur clique sur la fenêtre du bouton de fermeture à l'instar des autres applications Mac.
Cependant, je ne peut pas détecter si le système doit être résilié ou qu'il doit être caché, parce que dans tous les cas, un close
cas de browser-window
est appelée lorsque le bouton de fermeture est cliqué, l'OS ou de l'arrêt de l'application est terminée avec la commande quit, Cmd+Q
.
Est-il un moyen d'attirer l'événement en cliquant sur la fenêtre d'application du bouton fermer dans l'électronique de l'app?
Merci pour votre aide.
Postscript
Pour détecter les cas de clic sur un bouton de fermeture, j'ai essayé ce code
var app = require('app');
var BrowserWindow = require('browser-window');
var Menu = require('menu');
var force_quit = false;
var menu = Menu.buildFromTemplate([
{
label: 'Sample',
submenu: [
{label: 'About App', selector: 'orderFrontStandardAboutPanel:'},
{label: 'Quit', accelerator: 'CmdOrCtrl+Q', click: function() {force_quit=true; app.quit();}}
]
}]);
app.on('window-all-closed', function(){
if(process.platform != 'darwin')
app.quit();
});
app.on('ready', function(){
Menu.setApplicationMenu(menu);
mainWindow = new BrowserWindow({width:800, height:600});
mainWindow.on('close', function(e){
if(!force_quit){
e.preventDefault();
mainWindow.hide();
}
});
mainWindow.on('closed', function(){
console.log("closed");
mainWindow = null;
app.quit();
});
app.on('activate-with-no-open-windows', function(){
mainWindow.show();
});
});
Avec ce code, l'application est cachée lorsque le bouton de fermeture de la fenêtre d'application est cliqué, et que l'application est terminée quand Cmd+Q
est tapé. Cependant, lorsque j'essaie d'arrêter le système d'exploitation, la fermeture de l'événement est empêché.
OriginalL'auteur yukib | 2015-10-01
Vous devez vous connecter pour publier un commentaire.
Vous pouvez l'attraper à l'aide de la
close
cas de la le navigateur de la fenêtre api. Vous pouvez essayer la procédure suivante pour vérifier cela...Mise à jour:
Pour séparer les fonctionnalités que vous pouvez faire ce qui suit...
Le code ci-dessus utilise le
before-quit
gestionnaire d'événements pour gérer app "fermer" les événements sur l'application de l'api. Le navigateur de la fenêtre de "fermer" les événements sont encore traités sur le navigateur de la fenêtre de l'api parmainWindow.on('close')
.En outre, la
will-quit
événement est un lieu de test pour les problèmes avant que l'application se ferme complètement.close
événement est piégé quand un proche bouton est cliqué ou lorsqueCmd+Q
est tapé. En outre, cet événement est mis en cache quand un OS est à l'arrêt... j'aimerais détecter uniquementwhen a close button is clicked
...Lorsque vous appelez app.quit() de l'application tente de fermer toutes les fenêtres avant de s'arrêter. Vous avez une deuxième application.quit() sur le mainWindow "fermé" de l'événement. Cela peut poser un problème. Voir ma réponse mis à jour avec votre code.
Merci pour votre aide encore une fois! J'ai essayé votre code, et j'ai trouvé que seulement
close'' event is called when a close button is clicked, and
avant de quitter l'événement" et `proche" de l'événement sont appelées lorsque l'OS est à l'arrêt. Merci beaucoup!"activer-avec-sans-open windows" a été remplacé par "activer"
OriginalL'auteur Josh
Ainsi, Vous Pouvez intercepter l'Événement Close
OriginalL'auteur Rohit Goyal