2 回答
TA贡献1770条经验 获得超3个赞
经过几天的研究和测试我的代码,我终于让它工作了!
感谢这篇文章帮助我理解了我遇到的 ipcRender 和 ipcMain 问题。对于想要做类似事情的人,这就是我的做法。
在位于云端的 UI 代码中,添加以下代码:
const ipcRenderer = window.require('electron').ipcRenderer;
ipcRenderer.send('notes', "the msg from the cloud UI");
在 Electron 的 main.js 中,添加以下代码:
import { ipcMain } from 'electron'
//inside the createWindow function
ipcMain.on('notes', function(event, data) {
console.log('notes: ', data)
mainWindow.webContents.send('notes2', data) //send message back to webview
})
在 Electron 的 webview 标签中,添加以下代码:
<webview src={the_UI_url}
nodeIntegration
preload="file:{the_exact_path_of_preload.js}/preload.js"></webview>
nodeIntegration必须包括在内,否则,您将window.require is not a function在 UI 代码中收到错误消息
在 preload.js 中,添加以下代码:
const { ipcRenderer } = require('electron')
ipcRenderer.on('notes2', function(event, data) {
console.log('notes2: ', data);
});
添加所有这些代码后,我成功地在 Electron 控制台中看到了“来自云 UI 的消息”。
TA贡献2016条经验 获得超9个赞
您可以使用该executeJavaScript功能。
<webview>.executeJavaScript(`receiveMessage("My message!")`);
在您的 中<webview>,会有一个接收消息的函数:
function receiveMessage(message){
//Do something with `message`
}
添加回答
举报