Electron默认按Alt显示顶部菜单,如何禁用该功能?
解决Electron按下Alt键显示顶部菜单的问题
你的代码里注册的是CommandOrControl+Alt组合键,但单独按下Alt的默认行为并没有被拦截,而且Electron的顶部菜单显示还有应用菜单本身的设置需要调整,以下是可行的解决方案:
方案1:完全移除应用菜单(彻底解决)
如果你的应用不需要顶部菜单,直接将应用菜单设为null,这样无论是否按下Alt,都不会有菜单显示:
const { app, globalShortcut, Menu } = require('electron'); app.whenReady().then(() => { createWindow(); mainWindow = getMainWindow(); autoUpdater.checkForUpdates(); mainWindow.webContents.send('update-info', `Checking for updates. Current version ${app.getVersion()}`); // 移除整个应用菜单 Menu.setApplicationMenu(null); // 其他快捷键注册... globalShortcut.register('F11', () => { console.log('F11 key is disabled'); }); });
方案2:保留菜单但禁用Alt触发显示
如果需要保留菜单(比如通过右键或其他逻辑调用),可以拦截单独Alt键的默认行为,并禁用窗口菜单的自动显示:
const { app, globalShortcut, Menu } = require('electron'); app.whenReady().then(() => { createWindow(); mainWindow = getMainWindow(); autoUpdater.checkForUpdates(); mainWindow.webContents.send('update-info', `Checking for updates. Current version ${app.getVersion()}`); // 拦截单独Alt键的默认行为 globalShortcut.register('Alt', () => {}); // 禁用窗口菜单的可见性,避免Alt触发显示 mainWindow.setMenuBarVisibility(false); // 其他快捷键注册... globalShortcut.register('F11', () => { console.log('F11 key is disabled'); }); });
注意事项
- 若使用
autoHideMenuBar: true创建窗口,按下Alt仍会触发菜单显示,因此需要配合setMenuBarVisibility(false)或者拦截Alt键来禁用。 - Mac系统上的菜单是系统级的,若要完全隐藏,除了设置
Menu.setApplicationMenu(null),还可以在窗口创建时配置titleBarStyle: 'hidden'或titleBarStyle: 'customButtonsOnHover'。
内容的提问来源于stack exchange,提问作者Frederic Jasmin
相关产品推荐
相关产品推荐

