2016-01-26 9 views
5

Mi piacerebbe ottenere dati da un processo a un altro in elettrone e non riesco a capire come farlo. Ho il seguente codice:Come ottenere l'albero DOM da BrowserWindow nell'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. 

Ho provato ipc, ma riesco a capire come usarlo. Qualsiasi aiuto sarà apprezzato.

Grazie !!!

risposta

8

Se si desidera solo registrare i contenuti, è possibile scriverli nello stdout del processo principale direttamente utilizzando Electron's remote.process direttamente dal renderer, ma se si desidera inviare i contenuti al processo principale l'IPC è probabilmente il modo migliore (è possibile utilizzare anche file, prese ecc.).

Ecco un esempio molto veloce di come si può fare tutto questo dal proprio file main.js (ma suggerirei di usare un file separato per il codice Renderer e richiederlo usando l'opzione 'preload' di BrowserWindow, questo è solo a scopo illustrativo).

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

non ha funzionato con ipcRenderer.send, ma funziona con .sendSync. Grazie! –

Problemi correlati