我有一个带有菜单的应用程序(基于杂志),该菜单在Windows和Ubuntu上都可以正常运行,但是我无法使应用程序级别的自定义菜单项出现在MacOS上。这些菜单项是“文件”和“视图”条目。
我已经仔细研究了电子API文档,并且看到了OSX的特殊注意事项,尤其是有关“角色”属性的信息,但在这里我仍然受阻。我可以在OSX上为API文档中列出的事物类型创建菜单项(例如,通过Renderer脚本使用角色进行“编辑”菜单项),但不能为我的应用创建菜单项。
我的菜单项可能与mac菜单中保留的“文件/视图”菜单项名称发生冲突吗?
这是我的菜单模板字符串的片段:
var SendEvent = function(name) {
return function() {win.webContents.send(name);};
};
var template = [
{label: 'File', submenu: [
{label: 'New', click: SendEvent('file-new')},
{label: 'Open', click: OpenFile},
{label: 'Save', click: SendEvent('file-save')},
{label: 'Save As', click: SendEvent('file-save-as')},
{label: 'Close', click: SendEvent('file-close')},
{type: 'separator'},
{label: 'Quit', click: function() {app.quit();}}
]}, {label: 'View', submenu: [
{label: 'HTML/Markdown', click: SendEvent('view-toggle')}
]}
];
Menu.setApplicationMenu(Menu.buildFromTemplate(template));
在macOS上,具有自定义“文件”和“查看”菜单操作的应用程序是否还有其他示例?
Menu.setApplicationMenu(Menu.buildFromTemplate(template));
应该在createWindow()
函数内调用:
function createWindow() {
mainWindow = new BrowserWindow({
width: 800,
height: 600
})
mainWindow.loadURL(url.format({
pathname: path.join(__dirname, "index_menus.html"),
protocol: "file:",
slashes: true
}))
mainWindow.on("closed", () => {
mainWindow = null;
});
var template = [
{label: 'File', submenu: [
{label: 'New', click: SendEvent('file-new')},
{label: 'Open', click: SendEvent('file-open')},
{label: 'Save', click: SendEvent('file-save')},
{label: 'Save As', click: SendEvent('file-save-as')},
{label: 'Close', click: SendEvent('file-close')},
{type: 'separator'},
{label: 'Quit', click: function() {app.quit();}}
]},
{label: 'View', submenu: [
{label: 'HTML/Markdown', click: SendEvent('view-toggle')}
]}
];
Menu.setApplicationMenu(Menu.buildFromTemplate(template));
}
如果使用“文件”菜单,它将被放置在macOS上的YourAppName菜单下(第一个)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句