渲染器在使用 ipc 时不接收来自另一个渲染器的数据
Renderer doesn't receive data from another renderer while using ipc
我无法使用 ipc 从一个渲染器向另一个渲染器发送数据。我想要实现的目标如下:将变量从 index.js 发送到 cves.js。我保留了 console.log 输出用于调试。我收到 2 条消息 - "index.js sends update-target-os msg." 和 "main.js receives update-target-os msg and sends targetOS."。但是我没有得到 "cves.js receives targetOS".screen capture for reference
我的代码文件在这里:https://github.com/ohmtrivedi/electronProject。
希望有人能帮我解决这个问题。刚刚学习了 Electron,并尝试构建一个用于学习目的的应用程序。
我查看了您的代码,对我来说,问题似乎是 here,您通过 mainWindow
的 [=14] 发送 targetOS
频道=].
mainWindow
是文件 src/index.html
的 BrowserWindow
对象;但您想在 BrowserWindow
对象上为 src/cves.html
.
接收它
实现您想要完成的目标的一种方法是更新您的代码以在 [=] 上为 src/cves.html
创建 BrowserWindow
对象(例如,cvesWindow
) 23=] (当接收到 update-target-os
通道时)而不是在 index.js
.
中的 cell_cves.addEventListener
方法中创建它
然后在 main.js
中,在您的 update-target-os
部分中,将您收到的值设置为 main.js
变量,比如 osGuess
。
然后,在你的 cves.js
文件中,你可以有这样的东西:
ipcRenderer.send('cves-loaded', true);
您可以在 DOM 内容加载后执行它。这将通知主进程您的 CVES BrowserWindow
已加载。然后,main.js
可以发送事件的值,例如:
ipcMain.on('cves-loaded', (event, arg) => {
cvesWindow.webContents.send('targetOS', osGuess);
})
这样它就被 cves BrowserWindow
接收了。
通过上面的逻辑更新,我能够在 cves.html
的 osname
元素上显示值。
可能有更多方法可以实现此目的,但如果您只需要打开一个列出附加信息的对话框,我建议您使用 Single Page Application 方法。
我无法使用 ipc 从一个渲染器向另一个渲染器发送数据。我想要实现的目标如下:将变量从 index.js 发送到 cves.js。我保留了 console.log 输出用于调试。我收到 2 条消息 - "index.js sends update-target-os msg." 和 "main.js receives update-target-os msg and sends targetOS."。但是我没有得到 "cves.js receives targetOS".screen capture for reference
我的代码文件在这里:https://github.com/ohmtrivedi/electronProject。
希望有人能帮我解决这个问题。刚刚学习了 Electron,并尝试构建一个用于学习目的的应用程序。
我查看了您的代码,对我来说,问题似乎是 here,您通过 mainWindow
的 [=14] 发送 targetOS
频道=].
mainWindow
是文件 src/index.html
的 BrowserWindow
对象;但您想在 BrowserWindow
对象上为 src/cves.html
.
实现您想要完成的目标的一种方法是更新您的代码以在 [=] 上为 src/cves.html
创建 BrowserWindow
对象(例如,cvesWindow
) 23=] (当接收到 update-target-os
通道时)而不是在 index.js
.
cell_cves.addEventListener
方法中创建它
然后在 main.js
中,在您的 update-target-os
部分中,将您收到的值设置为 main.js
变量,比如 osGuess
。
然后,在你的 cves.js
文件中,你可以有这样的东西:
ipcRenderer.send('cves-loaded', true);
您可以在 DOM 内容加载后执行它。这将通知主进程您的 CVES BrowserWindow
已加载。然后,main.js
可以发送事件的值,例如:
ipcMain.on('cves-loaded', (event, arg) => {
cvesWindow.webContents.send('targetOS', osGuess);
})
这样它就被 cves BrowserWindow
接收了。
通过上面的逻辑更新,我能够在 cves.html
的 osname
元素上显示值。
可能有更多方法可以实现此目的,但如果您只需要打开一个列出附加信息的对话框,我建议您使用 Single Page Application 方法。