node.js - 關于electron主線程與渲染線程通信的問題(Menubar事件如何從渲染線程獲取數(shù)據(jù))
問題描述
大家好:
我在用electron寫一個類似編輯器的應用,在應用的菜單欄中一項保存文件功能:
因為菜單欄是在主線程中的,但是保存操作需要獲取渲染線程中一個編輯器里面的內(nèi)容.官網(wǎng)只有渲染線程請求主線程的例子(ipcMain和ipcRenderer),但是ipcMain好像不能主動請求ipcRenderer.
所以想問一下大家,主線程怎么主動請求渲染線程調(diào)用渲染線程的方法或觸發(fā)渲染線程的事件呢?
謝謝!
問題解答
回答1:找到解決方法了 ^_^
在ipcMain和ipcRenderer中同時監(jiān)聽兩個相同名字的事件,然后在主線程中使用focusedWindow.webContents.send(’save-file’)觸發(fā)ipcRenderer的save-file事件,在ipcRenderer的save-file事件中請求ipcMain的save-file事件并攜帶相應的數(shù)據(jù)就好了
ipcMain:
ipcMain.on(’save-file’ ,(event ,arg) => { console.log(arg)})
ipcRenderer:
ipcRenderer.on(’save-file’ ,(event ,arg) => { ipcRenderer.send(’save-file’ ,’test’)})回答2:
你可以先給渲染線程綁定一個事件,比如說 ipcRenderer.on(’save’, save);,然后在用戶點擊菜單中的 Save 時觸發(fā)這個事件,然后在 save 函數(shù)里再廣播事件,并且傳出來你需要的數(shù)據(jù)。
有點繞,不過暫時只能想到這樣。
相關文章:
1. 在mybatis使用mysql的ON DUPLICATE KEY UPDATE語法實現(xiàn)存在即更新應該使用哪個標簽?2. mysql - 怎么生成這個sql表?3. mysql儲存json錯誤4. 哭遼 求大佬解答 控制器的join方法怎么轉(zhuǎn)模型方法5. mysql - 表名稱前綴到底有啥用?6. Navicat for mysql 中以json格式儲存的數(shù)據(jù)存在大量反斜杠,如何去除?7. 編輯成功不顯示彈窗8. 怎么php怎么通過數(shù)組顯示sql查詢結(jié)果呢,查詢結(jié)果有多條,如圖。9. mysql - 數(shù)據(jù)庫表中,兩個表互為外鍵參考如何解決10. sql語句 - 如何在mysql中批量添加用戶?
