我试图用electronjs编写一个简单的菜单,我注意到第一个菜单的名称与我编写的不同。
这是我的主要.js:
const electron = require('electron')
const url = require('url')
const path = require('path')
const {app, BrowserWindow, Menu} = electron;
let mainWindow;
const mainMenuTemplate = [
{
label:'File',
submenu: [
{
label: 'Custom Undo',
role: 'undo'
},
]
},
{
label:'View',
submenu: [
{
role: 'reload'
},
]
}
];
// Build menu from template
const menu = Menu.buildFromTemplate(mainMenuTemplate);
// Insert
Menu.setApplicationMenu(menu);
// Listen
app.on('ready', function(){
// main window
mainWindow = new BrowserWindow({width: 800, height: 600});
// load html into
mainWindow.loadURL(url.format ({
pathname: path.join(__dirname, 'mainWindow.html'),
protocol: 'file:',
slashes: true
}))
})
这是应用程序的视图;请注意,第一个项目命名为Electron
,而不是File
。x1c 0d1x
第二个菜单项View
就可以了,知道为什么会发生这种情况吗?
1条答案
按热度按时间mlmc2os51#
在macOS上,应用程序菜单中的第一个菜单项总是以应用程序本身(源代码)命名。您可能应该允许第一个菜单项与macOS上的惯例相同,然后是文件菜单。
要做到这一点,同时也要跨平台工作,您可以沿着以下思路进行操作:
代码改编自电子文档和OP代码中的示例代码。
根据操作系统的不同,菜单将包含3个顶级对象(macOS)或2个顶级对象(非macOS)。