2016-01-26 7 views
5

Chciałbym uzyskać dane z jednego procesu do drugiego w elektronach i nie mogę wymyślić, jak to zrobić. Mam następujący kod:Jak uzyskać drzewo DOM z BrowserWindow w aplikacji elektronowej?

// 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. 

Próbowałem ipc, ale mogę dowiedzieć się, jak z niego korzystać. Każda pomoc zostanie doceniona.

Dzięki!

Odpowiedz

8

Jeśli chcesz tylko rejestrować zawartość, możesz zapisać je w głównym procesie standardowym bezpośrednio za pomocą Electron's remote.process bezpośrednio z renderera, ale jeśli chcesz wysłać zawartość do głównego procesu IPC jest prawdopodobnie najlepszym sposobem (możesz korzystaj również z plików, gniazd itp.).

Oto bardzo szybki przykład, jak można to wszystko zrobić z pliku main.js (ale proponuję użyć osobnego pliku dla kodu renderera i wymagać go przy użyciu opcji "wstępnego ładowania" BrowserWindow, to jest tylko w celach ilustracyjnych).

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

nie działa z plikiem ipcRenderer.send, ale działa z użyciem .sendSync. Dzięki! –