Я хочу, чтобы мое приложение Electron переключало инструменты разработчика в ответ на F12.
На странице рендерера я добавил:
const currentWebContents = require("electron").remote.getCurrentWebContents();
window.addEventListener("keydown", (e: KeyboardEvent) => {
if (e.keyCode === 123) { // F12
currentWebContents.toggleDevTools();
}
});
Это работает, когда я сосредоточен наГлавная страница.Однако, сразу после открытия инструментов dev, фокус переходит на инструменты dev, поэтому F12 больше не обнаруживается.
Я попытался исправить это, добавив прослушиватель к веб-содержимому devtools сразу послевызывая toggleDevTools()
примерно так:
if (currentWebContents.devToolsWebContents) {
currentWebContents.devToolsWebContents.on("before-input-event", (event: Electron.Event, input: Electron.Input) => {
if (input.type === "keyDown" && input.key === "F12") {
currentWebContents.toggleDevTools();
}
});
}
Однако currentWebContents.devToolsWebContents
равно null
сразу после его открытия.Мой первый вопрос: как убедиться, что это не null
- есть ли способ подождать, пока он полностью не откроется?
Я решил эту проблему, поместив код if (currentWebContents.devToolsWebContents)
в setTimeout(..., 1000);
Однако после этого мой обработчик before-input-event
не срабатывает при нажатии клавиш, когда он сосредоточен на devtools.
Кто-нибудь знает, почему это так?