我试图将一些数据从主进程发送到渲染器(浏览器视图),但似乎遇到了障碍。
当我调用 window.webContents.send 时,该事件只能在预加载中被捕获。我想使用此函数修改渲染器上的数据(修改屏幕的内容)。
预加载似乎是一条相当单向的道路,我可以从 html 视图中调用方法,但是如何从预加载中调用 html 视图呢?
或者如何将信息从主视图发送到渲染器视图并在那里修改 html?
有什么建议么?
当我调用 window.webContents.send 时,该事件只能在预加载中被捕获。我想使用此函数修改渲染器上的数据(修改屏幕的内容)。
您可以通过预加载脚本中的上下文桥公开函数。这将允许您的渲染器设置一个接收来自主进程的消息的侦听器。
下面是一个计数器的玩具示例,它将增加 HTML 中的计数器:
// main process
mainWindow.webContents.send('update-counter', 1)
Run Code Online (Sandbox Code Playgroud)
// preload
const { contextBridge, ipcRenderer } = require('electron')
contextBridge.exposeInMainWorld('electronAPI', {
handleCounter: (callback) => ipcRenderer.on('update-counter', callback)
})
Run Code Online (Sandbox Code Playgroud)
// renderer process
const counter = document.getElementById('counter')
window.electronAPI.handleCounter((event, value) => {
const oldValue = Number(counter.innerText)
const newValue = oldValue + value
counter.innerText = newValue
})
Run Code Online (Sandbox Code Playgroud)
<!--html-->
<body>
Current value: <strong id="counter">0</strong>
<script src="./renderer.js"></script>
</body>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1311 次 |
最近记录: |