1
votes

Fenêtre du navigateur Electron Fenêtre de fermeture Prevent Control + W

J'ai une application electron js avec Angular 8. Si l'utilisateur exécute la commande control + w, il ferme automatiquement la fenêtre. J'essaie de parcourir BrowserWindow Api , mais je n'ai pas trouvé de indicateur ou gestionnaire pour empêcher ce comportement de se produire.


3 commentaires

Ce serait un problème majeur de convivialité si les sites Web pouvaient empêcher les utilisateurs de les fermer. Même s'il ne s'agit que d'une combinaison de touches, ils bloquent, car certains utilisateurs utilisent en fait ces combinaisons de touches à la place de leur souris. Il en va de même pour les applications de bureau.


C’est un excellent point sur la convivialité. La convivialité que je recherche est similaire à VSCode, en ce sens qu'il comporte des onglets, et je veux que l'utilisateur puisse fermer les onglets avec control + w, et quand il arrive au dernier, il ferme la fenêtre.


L'une des questions répertoriées comme liées est la suivante: stackoverflow.com/questions/59392806/... . Pouvez-vous vérifier si la solution qui y est répertoriée fonctionne réellement?


3 Réponses :


3
votes

Vous devez changer ou supprimer le menu d'application par défaut qui a ce raccourci Fenêtre -> Fermer Ctrl + W par défaut

Menu.setApplicationMenu(null) // remove default application menu

// or

browserWindow.setMenu(null) // just remove default menu of a specific window and not all windows

Cela devrait faire l'affaire

Documents pertinents:


0 commentaires

2
votes

La suppression du menu d'application par défaut supprime d'autres raccourcis utiles, je suggère donc de cibler spécifiquement Ctrl + W, ce qui peut être fait en utilisant globalShortcut:

const { app, globalShortcut } = require("electron");

app.on("ready", () => {
    globalShortcut.register("CommandOrControl+W", () => {
        //stuff here
    });
});

Plus d'informations sur ce ici


3 commentaires

Les autres méthodes de menu et de navigateur ne fonctionnaient pas pour moi (du moins dans le débogage local), en essayant celle-ci en conjonction avec app.dock.hide () BTW, il manque la fonction de fermeture de register () ')'.


Bien que le raccourci fonctionne, je n'ai pas pu empêcher le comportement par défaut, j'ai fini par utiliser cette solution stackoverflow.com/a/35782702/970375 < / a>


Le problème avec cette solution est qu'elle bloque ce raccourci pour toutes les applications, pas seulement votre application. En outre, vous auriez toujours un élément de menu dans le menu de votre application indiquant qu'il dispose d'un accélérateur "Ctrl + W". Vous pouvez modifier le menu de votre application pour désactiver et masquer cet élément de menu (tout en conservant les autres utiles), imo étant la meilleure solution.