javascript - 如何从 Electron 应用程序中的 BrowserWindow 获取 DOM 树?

标签 javascript dom electron

我想用 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 的“预加载”选项要求它,这只是用于说明目的)。

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');

关于javascript - 如何从 Electron 应用程序中的 BrowserWindow 获取 DOM 树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35019166/

相关文章:

javascript - React/Flux + Jasmine - 预期 spy 被调用失败

javascript - 如何在 Laravel 中通过 Vue 对价格和日期进行排序

javascript - 如何使用 javascript 迭代 HTML 实体

javascript - event.srcElement.id 的替代方案

javascript - 如何在从第一个日期选择器中选择日期时在第二个日期选择器中设置日期?

javascript - javascript 重定向后 css 无法正确加载

javascript - AngularJS ng-switch 在 <p> 标签上抛出错误

reactjs - Electron + ReactJS + Material-UI 渲染故障

javascript - Electron.js : how to create a separate download webContents. 窗口 session ?

node.js - 在 Node.js/Electron 应用程序中播放本地 .avi 视频