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

时间:2016-01-26 16:45:16

标签: 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 ready");
});

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

我试过ipc,但我可以弄清楚如何使用它。任何帮助将不胜感激。

感谢!!!

2 个答案:

答案 0 :(得分:8)

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

以下是一个非常快速的示例,介绍如何从main.js文件中完成所有操作(但我建议使用单独的文件作为Renderer代码,并使用BrowserWindow' s&# 39; 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');

答案 1 :(得分:-1)

对我有用,请尝试:

document.getElementsByTagName('input')[0].files[0].path

在我的代码中:

document.getElementById("dst-btn").addEventListener("click", function(){
console.log('dst');
console.log(document.getElementsByTagName('input')[0].files[0].path);


});