使用ipc时,渲染器未从其他渲染器接收数据

时间:2018-06-26 19:50:44

标签: electron ipc

我无法使用ipc将数据从一个渲染器发送到另一个渲染器。我想要实现的目标如下:将变量从index.js发送到cves.js。我保留console.log输出以进行调试。我收到2条消息-“ index.js发送update-target-os msg。”和“ main.js接收update-target-os msg并发送targetOS。”。但是我没有得到“ cves.js接收targetOS”。screen capture for reference

我的代码文件在这里:https://github.com/ohmtrivedi/electronProject

希望有人可以帮助我解决这个问题。刚学了电子,并尝试构建一个用于学习目的的应用程序。

1 个答案:

答案 0 :(得分:0)

我查看了您的代码,对我来说,问题似乎是here,您正在通过targetOS的{​​{1}}发送mainWindow频道

webContents是文件mainWindow的{​​{1}}对象;但您想在BrowserWindow的{​​{1}}对象上接收它。

一种达到您要完成的目标的方法是更新代码,以在{{1}上为src/index.html创建BrowserWindow对象(例如src/cves.html) }(收到BrowserWindow频道时),而不是在cvesWindow的{​​{1}}方法中创建频道。

然后在src/cves.html的{​​{1}}部分中,将收到的值设置为main.js变量,例如update-target-os

然后,在您的cell_cves.addEventListener文件中,您可能会有类似的内容:

index.js

您可以在DOM内容加载后执行它。这将通知主进程您的CVES main.js已加载。然后,update-target-os然后可以在以下事件上发送值:

main.js

cves osGuess收到了它。

通过上面的逻辑更新,我能够获得要显示在cves.js ipcRenderer.send('cves-loaded', true); 元素上的值。

可能有更多方法可以完成此操作,但是如果您只需要打开一个列出其他信息的对话框,则建议使用Single Page Application方法。