如何从电子应用程序中的 BrowserWindow 获取 DOM 树?

How to get DOM tree from BrowserWindow in electron app?

我想用 electron 从一个进程获取数据到另一个进程,但我不知道该怎么做。我有以下代码:

// I create a new browser window to load url
var win = new BrowserWindow({ width: 800, height: 600, show: false });

win.loadURL('chrome://gpu');
win.webContents.on('dom-ready', function() {
  console.log("dom is ready");
});

// Here I want to get content of the loaded page and log it.

我试过 ipc,但我知道如何使用它。

如果你只想记录内容,你可以直接使用 Electron's remote.process 从渲染器直接将它们写入主进程标准输出,但如果你想将内容发送到主进程 IPC 可能是最佳方式(您也可以使用文件、套接字等)。

这是一个非常简单的示例,说明如何从 main.js 文件中完成所有这些操作(但我建议为渲染器代码使用一个单独的文件,并使用 BrowserWindow 的 'preload' 选项,这仅用于说明目的)。

var electron = require('electron');
var ipc = electron.ipcMain;
var BrowserWindow = electron.BrowserWindow;

var win = new BrowserWindow({ width: 800, height: 600, show: false });

win.webContents.on('dom-ready', () => {
  win.webContents.executeJavaScript(`
    require('electron').ipcRenderer.send('gpu', document.body.innerHTML);
  `);
});

ipc.on('gpu', (_, gpu) => {
  console.log(gpu)
})

win.loadURL('chrome://gpu');