首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >电子使用加速器调用上下文菜单中的菜单项

问电子使用加速器调用上下文菜单中的菜单项
EN

Stack Overflow用户
提问于 2015-07-26 12:43:51
回答 3查看 3K关注 0票数 4

如何使用accelerator在上下文菜单中调用menu item?

代码语言:javascript
复制
var menu = new Menu();

menu.append(new MenuItem({
  label: 'Say something',
  click: function(){
    alert("Hello");
  },
  accelerator: "CmdOrCtrl+E"
}));


window.addEventListener('contextmenu', function (e) {
  e.preventDefault();
  menu.popup(currentWindow);
}, false);

以上代码起作用。出现上下文菜单,当单击菜单项时,单击回调生效。

但是加速器命令不起作用。有什么想法吗?

附带问题:

我可以将click event传递给menu.popup,然后将它传递给menu-item click callback吗?现在,我只是将click事件存储在一个全局变量中。

EN

回答 3

Stack Overflow用户

发布于 2015-07-28 02:57:06

我不相信电子会注册加速器,除非你叫Menu.setApplicationMenu(menu)或类似的。在你的片段中,你创建了一个菜单,但是在调用弹出方法之前,你不会对它做任何事情。在注册加速器之前,电子如何知道你想要使用它?它们在设置为“应用程序”菜单时被注册。

尽管如此,它看起来并不像电子提供了一种简单的方式来注册一个本地的、渲染程序专用的快捷方式,而不创建一个BrowserWindow菜单。您可以在这个问题中读到更多有关它的内容:https://github.com/atom/electron/issues/1334 (译),在OSX中,加速器由OS的菜单系统处理,而不是由电子处理,因此在没有菜单的情况下为这些本地化快捷方式添加跨平台支持将需要对OSX版本进行大量的工作。

建议的解决方案是在JavaScript中捕获您想要的快捷方式,然后以这种方式触发命令。您仍然可以使用加速器选项来表示上下文菜单中的键组合。

票数 1
EN

Stack Overflow用户

发布于 2019-06-02 01:40:02

我发现今天注册上下文菜单加速器的最简单方法是将上下文菜单附加到应用程序菜单中,这将注册它们,但是设置visible: false,使它们不会实际出现。

在使用菜单模板时非常简单。

代码语言:javascript
复制
function registerAppMenu(app, invisibleMenus) {
  const template = [ ... ]; // use app to create the file-menu
  template.push(...invisibleMenus.map(menu => ({...menu, visible: false})));
  Menu.setApplicationMenu(Menu.buildFromTemplate(template));
}
票数 1
EN

Stack Overflow用户

发布于 2019-04-03 22:34:16

最好用这个来代替:

代码语言:javascript
复制
const {Menu} = require('electron').Menu;
const mainMenu = Menu.buildFromTemplate(mainMenuTemplate);
Menu.setApplicationMenu(mainMenu)

所以你可以用

代码语言:javascript
复制
mainMenuTemplate.push({
    /* your menu item properties*/
});`

把它推到最后。使用unshift()而不是push()将其添加到mainMenuTemplate的开头,但是即使是加速器也被添加并按其应有的方式工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31637084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档