轉自 https://segmentfault.com/q/1010000015599245/
准備實現的功能:
頁面1(渲染進程1)中點擊按鈕,發送事件給到主進程。主進程成功接收事件后,通過mainWindow.webContents.send發送事件event。在頁面2(渲染進程2)中通過ipcRender.on方法監聽event,當接收到event后,開始業務處理。
問題:
主進程成功接收到了頁面1(渲染進程1)發送的事件,隨后在主進程中通過mainWindow.webContents.send發送到事件event,頁面2(渲染進程2)並沒有收到。
代碼:
頁面1(渲染進程1):
const ipcRenderer = require('electron').ipcRenderer;
function playDanmu(){
ipcRenderer.send('sigPlayDanmu', '123456');
};
主進程:
const ipcMain = require('electron').ipcMain;
ipcMain.on('sigPlayDanmu', (event, args) => {
console.log('sigPlayDanmu is captured');
mainWindow.webContents.send('ping', 'pong');
});
頁面2(渲染進程2):
<script>
require('electron').ipcRenderer.on('ping', (event, message) => {
...業務處理
})
</script>
是哪里的姿勢不對嗎?
所以想問一下大家,主線程怎么主動請求渲染線程調用渲染線程的方法或觸發渲染線程的事件呢?
謝謝!
解決辦法:
在主線程中,調用webContents.send()方法的對象用錯了。
往哪個窗口對應的渲染線程中發消息,就使用哪個窗口對象來調用。
上面改為page2WindowObject.webContents.send()就可以了
