2017-05-09 63 views
4

我已经写了一个非常非常基本的电子应用程序 - 标准的hello世界类型,基本上有一个HTML文件,里面写着“Hello,World” - 并且存在于电子内的“app”目录中,然后加载通过main.js运行应用程序时。电子 - 我的应用可以与主要和渲染器进程通信吗?

现在,我们可以说我希望能够与我的应用程序中的JavaScript通信与这些进程(主,或渲染器,最好是两个!),这可以吗?我无法在网上找到任何有关它的信息 - 但我的主要问题可能是,我根本不知道要找什么东西。我对Electron非常陌生。

+0

要在 “IPC”(进程间通信)和 “电子” 搜索。有很多方法可以做到这一点。这家伙有很多关于Electron的ipc,调试等视频/博客教程:http://electron.rocks/video-series/ –

回答

3

我想你是在谈论主流程和其他浏览器窗口。

您可以使用BrowserWindow.webContents.send(channel[, arg1][, arg2][, ...])将消息从主进程发送到浏览器窗口,并使用ipcRenderer接收它。就拿这个例子:

主要过程:

subWindow.webContents.send("foo","bar"); 

BrowserWindow称为subWindow

var ipc=require("electron").ipcRenderer; 
ipc.on("foo",(event, arg1) => { 
    console.log(arg1); //Outputs "bar" 
}); 

当你想从浏览器窗口,将数据发送到主进程,使用remote.app.emit。使用app.on接收它。同样的例子:

主要过程:

var app=require("electron").app; 
app.on("test",(arg) => { 
    if (arg=="hey!") console.log("ha!"); 
} 

子窗口:

require("electron").remote.app.emit("test","hey!"); 
相关问题