В 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
, не заходя вручную в консоль разработчика (я даже приму решение, которое отправляет код на программно открытую консоль разработчика)?