Electron 渲染器不';使用ipc时,无法从其他渲染器接收数据
我在使用ipc将数据从一个渲染器发送到另一个渲染器时遇到问题。我试图实现的是:将一个变量从index.js发送到cves.js。我保留了console.log输出以进行调试。我收到两条消息——“index.js发送更新目标操作系统消息。”和“main.js接收更新目标操作系统消息并发送目标操作系统消息”。但是我没有得到“cves.js接收targetOS” 我的代码文件在这里:Electron 渲染器不';使用ipc时,无法从其他渲染器接收数据,electron,ipc,Electron,Ipc,我在使用ipc将数据从一个渲染器发送到另一个渲染器时遇到问题。我试图实现的是:将一个变量从index.js发送到cves.js。我保留了console.log输出以进行调试。我收到两条消息——“index.js发送更新目标操作系统消息。”和“main.js接收更新目标操作系统消息并发送目标操作系统消息”。但是我没有得到“cves.js接收targetOS” 我的代码文件在这里: 希望有人能帮我。刚刚学习electron并尝试构建一个用于学习目的的应用程序。我查看了您的代码&对我来说,问题似乎是,
希望有人能帮我。刚刚学习electron并尝试构建一个用于学习目的的应用程序。我查看了您的代码&对我来说,问题似乎是,您通过
主窗口的网络内容将目标发送到哪里
mainWindow
是文件src/index.html
的BrowserWindow
对象;但是您希望在src/cves.html
的浏览器窗口
对象上接收它
一种方法是更新代码,为src/cves.html
在main.js
上创建BrowserWindow
对象(比如,cvesWindow
)(当收到updatetarget os
频道时)而不是在index.js
中的cell\u cves.addEventListener
方法中创建它
在main.js
中的updatetargetos
部分,将收到的值设置为main.js
变量,比如osGuess
然后,在您的cves.js
文件中,您可以有如下内容:
ipcRenderer.send('cves-loaded', true);
您可以在加载DOM内容后执行它。这将通知主进程CVES浏览器窗口已加载。然后,main.js
可以在如下事件上发送值:
ipcMain.on('cves-loaded', (event, arg) => {
cvesWindow.webContents.send('targetOS', osGuess);
})
这样cves浏览器窗口就会接收到它
通过上面的逻辑更新,我能够在cves.html
上的osname
元素上获得要显示的值
可能有更多的方法来实现这一点,但如果您只需要打开一个列出其他信息的对话框,我建议您使用一种方法。嗨,尼尔,我尝试根据您的建议进行更改。但是,我仍然面临同样的问题,main.js从index.js接收数据,但是当main.js使用用于cves.html的BrowserWindow发送数据时,cves.js没有接收到数据。也许我在正确实施更改时犯了错误。修改后的代码位于:。另外,如果你能分享你的工作代码,这将是一个很大的帮助,我是Electron的新手。当然,如果你做了一个,你可以批准它将更新的代码放入你的存储库。看起来您正在使用did finish load
触发事件。建议在导航完成后,它可以工作;我已经更新了它,以便在加载DOM时发送事件。希望有帮助。如果您有问题,请对请求进行评论。