node.js - 關(guān)于electron主線程與渲染線程通信的問(wèn)題(Menubar事件如何從渲染線程獲取數(shù)據(jù))
問(wèn)題描述
大家好:
我在用electron寫(xiě)一個(gè)類(lèi)似編輯器的應(yīng)用,在應(yīng)用的菜單欄中一項(xiàng)保存文件功能:
因?yàn)椴藛螜谑窃谥骶€程中的,但是保存操作需要獲取渲染線程中一個(gè)編輯器里面的內(nèi)容.官網(wǎng)只有渲染線程請(qǐng)求主線程的例子(ipcMain和ipcRenderer),但是ipcMain好像不能主動(dòng)請(qǐng)求ipcRenderer.
所以想問(wèn)一下大家,主線程怎么主動(dòng)請(qǐng)求渲染線程調(diào)用渲染線程的方法或觸發(fā)渲染線程的事件呢?
謝謝!
問(wèn)題解答
回答1:找到解決方法了 ^_^
在ipcMain和ipcRenderer中同時(shí)監(jiān)聽(tīng)兩個(gè)相同名字的事件,然后在主線程中使用focusedWindow.webContents.send(’save-file’)觸發(fā)ipcRenderer的save-file事件,在ipcRenderer的save-file事件中請(qǐng)求ipcMain的save-file事件并攜帶相應(yīng)的數(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:
你可以先給渲染線程綁定一個(gè)事件,比如說(shuō) ipcRenderer.on(’save’, save);,然后在用戶(hù)點(diǎn)擊菜單中的 Save 時(shí)觸發(fā)這個(gè)事件,然后在 save 函數(shù)里再?gòu)V播事件,并且傳出來(lái)你需要的數(shù)據(jù)。
有點(diǎn)繞,不過(guò)暫時(shí)只能想到這樣。
相關(guān)文章:
1. MySQL數(shù)據(jù)庫(kù)中文亂碼的原因2. 在windows下安裝docker Toolbox 啟動(dòng)Docker Quickstart Terminal 失敗!3. docker gitlab 如何git clone?4. angular.js - 關(guān)于$apply()5. angular.js - angularjs的自定義過(guò)濾器如何給文字加顏色?6. docker-compose 為何找不到配置文件?7. docker api 開(kāi)發(fā)的端口怎么獲取?8. dockerfile - 我用docker build的時(shí)候出現(xiàn)下邊問(wèn)題 麻煩幫我看一下9. angular.js - Ionic 集成crosswalk后生成的apk在android4.4.2上安裝失敗???10. dockerfile - 為什么docker容器啟動(dòng)不了?
