2016-11-24 50 views
1

我正在浏览Pluralsight上的电子基础课程(Trent,2016)。我无法让加速器在我的“退出”菜单项上工作。以下是我的整个main.js文件。从我所能看到的图片(下图)中成功创建菜单,并且直接单击退出菜单项可以关闭应用程序,但Alt + W组合键不会。我在Windows 10上。我错过了什么?电子菜单加速器不能正常工作

menu screenshot

const electron = require('electron'); 

const app = electron.app; 
const BrowserWindow = electron.BrowserWindow; 
const Menu = electron.Menu; 

app.on('ready', _ => { 
    new BrowserWindow(); 

    const template = [ 
    { 
     label: "File", 
     submenu: [{ 
      label: 'About', 
      click: _ => { 
       console.log('clicked'); 
      } 
     }, 
     { 
      type: 'separator' 
     }, 
     { 
      label: 'Quit', 
      accelerator: 'Alt+W', 
      click: _ => { 
       app.quit(); 
      } 
     }] 
    }]; 

    const menu = Menu.buildFromTemplate(template); 
    Menu.setApplicationMenu(menu); 
}); 

回答

0

看起来像在Windows上需要装上BrowserWindow东西。放置loadURL使它工作。需要尝试的东西,除了loadURL虽然..

app.on('ready', _ => { 
    mainWindow = new BrowserWindow() 

    mainWindow.loadURL('https://github.com') 

    const name = electron.app.getName() 

    const template = [ 
     { 
      label: name, 
      submenu: [{ 
       label: `About ${name}` , 
       click: console.log('clicked!') 
      },{ 
       type:'separator' 
      },{ 
       label:'Quit', 
       click: _ =>{ 
        app.quit()      
       }, 
       accelerator:'CmdOrCtrl+Q' 
      } 
      ] 
     }   
    ] 

    const menu = Menu.buildFromTemplate(template) 
    Menu.setApplicationMenu(menu) 
    }) 
0

的文档已经改变了过去一年和accelerator不再是必要的。现在,您可以使用globalShortcut来定义快捷方式。

Accelerator Documentation:快捷方式与使用寄存器方法globalShortcut模块注册,即

const {app, globalShortcut} = require('electron') 

app.on('ready',() => { 
    // Register a 'CommandOrControl+Y' shortcut listener. 
    globalShortcut.register('CommandOrControl+Y',() => { 
    // Do stuff when Y and either Command/Control is pressed. 
    }) 
}) 

所以,你的代码更改此

const electron = require('electron'); 

const app = electron.app; 
const BrowserWindow = electron.BrowserWindow; 
const Menu = electron.Menu; 
const globalShortcut = electron.globalShortcut; 

app.on('ready', _ => { 
    new BrowserWindow(); 

    // Declare shortcuts 
    globalShortcut.register('Alt+W',() => app.quit()); 

    const template = [ 
    { 
     label: "File", 
     submenu: [{ 
      label: 'About', 
      click: _ => { 
       console.log('clicked'); 
      } 
     }, 
     { 
      type: 'separator' 
     }, 
     { 
      label: 'Quit', 
      click: _ => { 
       app.quit(); 
      } 
     }] 
    }]; 

    const menu = Menu.buildFromTemplate(template); 
    Menu.setApplicationMenu(menu); 
});