Могу ли я получить доступ к DOM в BrowserWindow в Electron после получения URL-адреса, если я установил javascript: false? - PullRequest
0 голосов
/ 23 сентября 2019

В Electron я хочу отправить содержимое загруженного документа из BrowserWindow обратно в основной процесс.Мой код выглядит примерно так:

            var child = new BrowserWindow({
                partition: 'potato',
                show: false,
                webPreferences: {
                    nodeIntegration: true,
                    // javascript: false,
                }
            });
            child.webContents.on('did-stop-loading', () => {
                child.webContents.executeJavaScript(`
                    require('electron').ipcRenderer.send('potato', {
                        html: document.documentElement.outerHTML,
                    });
                `);
            });
            ipcMain.once('potato', async (event, arg) => {console.log(arg);});

Тем не менее, на сайте есть некоторый Javascript, который портится с его собственным документом, который мне нужно избегать.Я пробовал что-то вроде этого:

            child.webContents.on('did-stop-loading', () => {
                child.webContents.executeJavaScript(`
                    debugger;
                `);
            });

Но, похоже, это не останавливает.Настройка javascript: false работает, но, похоже, это также нарушает работу моего 'did-stop-loading' слушателя.

Я обнаружил, что если я сделаю child.openDevTools() с show: true,, тогда я смогу вручную ввестикод в инструментах разработки, и тогда он работает, но, очевидно, я не могу набрать это вручную для моих пользователей.

Есть ли какой-нибудь способ выполнить мой JS на странице и даже получить HTML из DOMхотя я установил javascript: false, не заходя вручную в консоль разработчика (я даже приму решение, которое отправляет код на программно открытую консоль разработчика)?

...