2016-11-23 62 views
1

我是一個後端開發人員得到一個小項目來解決它。 所以我的老闆給了我一個運行在觸摸設備上的電子項目。電子不聽keydown事件

我知道如果使用document對象,我可以在Javascript中聽任何關鍵事件,但在電子中它不起作用,它說docuemnt cannot be found

因此,當我或其他支持人員按下F12按鈕然後開發工具在電子應用程序中呈現出來時就實現了這一點。

mainWindow = new BrowserWindow({ 
    'web-preferences': {'web-security': false} 
    }); 

    mainWindow.onkeydown = function (e) { 
    console.log("Key down"); 
    if (e.which === 123) { 
     console.log("Key is F12"); 
     mainWindow.webContents.openDevTools(); 
    } 
    }; 

但是,這段代碼對我沒有用。我不知道如何我可以聽按F12按鈕。

不幸的是,我不能渲染出可以顯示devtools的UI的按鈕。因爲客戶不能按下它。

有時我需要在設備上的devtools中看到實時控制檯選項卡。

回答

2

有一個known issue in Electron,它阻止了常規方法使用傳統的JS方法來捕捉關鍵事件。

還有一個叫做electron-localshortcut的小型庫,通過在窗口處於活動狀態時劫持Electron全局快捷方式API來繞過此問題。

使用像這樣在你的main.js:

const electronLocalshortcut = require('electron-localshortcut'); 
electronLocalshortcut.register(mainWindow, 'F12',() => { 
    // Open DevTools 
}); 
+0

做這項工作的keydown或者只是按鍵? – Jaybeecave

+0

Electron中的[加速器文檔](https://github.com/electron/electron/blob/master/docs/api/accelerator.md)並沒有說明它們是基於什麼,而是暗示了按鍵。 –

+0

謝謝,我試着用globalShortcut註冊鍵盤事件,但是這隻適用於第一個打開的Electron窗口,如果它們同時打開,它不適用於多個窗口。 electron-localshortcut可用於同時打開多個窗口 – toongeorges