2016-11-24 48 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); 
});