Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在electron应用程序中从BrowserWindow获取DOM树?_Javascript_Dom_Electron - Fatal编程技术网

Javascript 如何在electron应用程序中从BrowserWindow获取DOM树?

Javascript 如何在electron应用程序中从BrowserWindow获取DOM树?,javascript,dom,electron,Javascript,Dom,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

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

// 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,但我知道如何使用它。

如果您只想记录内容,可以直接从渲染器将内容写入主进程标准输出,但如果您想将内容发送到主进程,ipc可能是最好的方法(您也可以使用文件、套接字等)

下面是一个非常快速的示例,说明了如何从main.js文件中完成这一切(但我建议对渲染器代码使用单独的文件,并要求使用BrowserWindow的“预加载”选项,这只是为了说明目的)


它不适用于ipcRenderer.send,但适用于.sendSync。谢谢@BillLumbert,你能分享你的解决方案吗?我在electron Output“UnhandledPromisejectionWarning:error:脚本无法执行”中出现错误,这通常意味着抛出了错误。请检查渲染器控制台以了解错误。“窗口控制台显示此错误”chrome-extension://ghbmnnjooekpmoecnnnilnnbdlolhkhi/page_embed_script.js net::ERR_失败“现在使用
app.getGPUInfo()
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');