Как переключать devtools в приложении Electron, в то же время ориентируясь на devtools? - PullRequest
1 голос
/ 18 марта 2019

Я хочу, чтобы мое приложение 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.

Кто-нибудь знает, почему это так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...