node.js - 關于electron主線程與渲染線程通信的問題(Menubar事件如何從渲染線程獲取數據)
問題描述
大家好:
我在用electron寫一個類似編輯器的應用,在應用的菜單欄中一項保存文件功能:
因為菜單欄是在主線程中的,但是保存操作需要獲取渲染線程中一個編輯器里面的內容.官網只有渲染線程請求主線程的例子(ipcMain和ipcRenderer),但是ipcMain好像不能主動請求ipcRenderer.
所以想問一下大家,主線程怎么主動請求渲染線程調用渲染線程的方法或觸發渲染線程的事件呢?
謝謝!
問題解答
回答1:找到解決方法了 ^_^
在ipcMain和ipcRenderer中同時監聽兩個相同名字的事件,然后在主線程中使用focusedWindow.webContents.send(’save-file’)觸發ipcRenderer的save-file事件,在ipcRenderer的save-file事件中請求ipcMain的save-file事件并攜帶相應的數據就好了
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 時觸發這個事件,然后在 save 函數里再廣播事件,并且傳出來你需要的數據。
有點繞,不過暫時只能想到這樣。
相關文章:
1. php - 請問大批量數據處理,如何分割?2. html5和Flash對抗是什么情況?3. MySQL主鍵沖突時的更新操作和替換操作在功能上有什么差別(如圖)4. javascript - vue過渡效果 css過渡 類名的先后順序5. css右浮動字的順序顛倒了6. 數據庫 - Mysql的存儲過程真的是個坑!求助下面的存儲過程哪里錯啦,實在是找不到哪里的問題了。7. ios - 類似微博首頁,一張圖的時候是如何確定圖大小的?8. javascript - vuejs+elementui 購物車價格計算,點擊加減號修改數量總價都不會改變,但是計算執行了9. javascript - 如何使用loadash對[object,object,object]形式的數組進行比較10. javascript - 我是做web前端的,公司最近有一個項目關于數據統計的!
