// main.js
const { ipcRenderer } = require('electron');
...
const window = new BrowserWindow({
...
preload: 'my/preload/path/preload.js', // Here preload is loaded when the window is created
})
...
ipcRenderer.on('my-event', (string) => {
// do struff with string
});
1条答案
按热度按时间odopli941#
当涉及到窗口和主进程之间的通信时,电子可能会有点令人头痛,这是有充分理由的:安全。
但是,这个问题有两种解决方案:
1.不推荐:index.html中
{ nodeIntegration: true }
和window.electron
所需的plainipcRenderer,这可能会导致很多麻烦,请不要这样做,您将所有nodejs函数的访问权限给予用户,如fs、child_process ...1.建议:preload. Preload在进程和窗口之间架起了桥梁,允许您选择要与窗口共享的内容,在本例中,是没有整个电子访问权限的ipcRenderer。
点击此处了解更多关于Electronic security的信息
首先,创建一个preload.js,将作用域隔离的ipcRenderer.send函数传递给窗口
关于contextBridge here的更多信息
在主电子脚本中
型
完整的here示例
最后,您希望从中捕获事件而不更改行为的窗口