2016-11-23 6 views
1

Ich bin ein Backend-Entwickler, der ein kleines Projekt bekam, um es zu beheben. Also gibt mir mein Chef ein Elektronenprojekt, das auf Touch-Geräten läuft.Electron hört Keydown Event nicht

Ich weiß, dass ich keine Schlüsselereignisse in Javascript hören kann, wenn ich das document Objekt verwende, aber in Elektron funktioniert es nicht, es sagt die docuemnt cannot be found.

So implementiert, wenn ich oder ein anderer Support-Typ die F12-Taste drücken, dann werden die Dev-Tools in der Elektronen-App gerendert.

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(); 
    } 
    }; 

Aber dieser Code funktioniert nicht für mich. Ich habe keine Ahnung, wie ich die F12-Taste drücken kann.

Leider kann ich die Schaltfläche nicht auf der Benutzeroberfläche rendern, die die Devtools anzeigen kann. Wegen der Kunden muss es nicht drücken.

Manchmal muss ich die Echtzeitkonsole in Devtools auf dem Gerät sehen.

Antwort

2

Es gibt eine known issue in Electron, die den üblichen Ansatz zum Abfangen wichtiger Ereignisse mit dem traditionellen JS-Ansatz verhindert.

Es gibt auch eine kleine Bibliothek mit der Bezeichnung electron-localshortcut, die dieses Problem umgeht, indem sie die globale Shortcuts-API von Electronic entführt, wenn das Fenster aktiv ist.

Verwendung wie dies in Ihrem main.js:

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

funktionierts für keydown oder nur keypress? – Jaybeecave

+0

Die [Dokumentation der Accelerators] (https://github.com/electron/electron/blob/master/docs/api/accelerator.md) in Electron sagt nicht genau, worauf sie basieren, aber Keypress ist impliziert. –

+0

Danke, ich habe versucht, Tastaturereignisse mit globalShortcut zu registrieren, aber das funktionierte nur für das erste Electron-Fenster, das geöffnet war, es funktionierte nicht für mehrere Fenster, wenn sie gleichzeitig geöffnet waren. electron-localshortcut funktioniert für mehrere gleichzeitig geöffnete Fenster – toongeorges

Verwandte Themen