Contents

Electron 開請新視窗後處理多視窗問題

最近實作new Browserwindow()多視窗後,關閉原本猜考程式使用app.close(),結果發現程式每一個都會關閉,但不知道要怎麼處理,後來有爬到【Electron Playground 系列】窗口篇 - SegmentFault 思否 有講多視窗問題。

所有多視窗觸發程式關閉

1
2
3
4
5
app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') {
    app.quit();
  }
});

其實原本程式就有帶進這個 function,所以所有 browserwindow 關掉會做app.quit()

處理多視窗方法

裡面有提到【Electron Playground 系列】窗口篇 - SegmentFault 思否,browserwindow有各自id,建立 browserwindowMap 紀錄所有browserwindow.id,針對關閉對應所有 id 做特別處理動作。

我想到比較完美作法

IpcMain 方法做關閉 Electron 動作,我原本在想上面要怎麼串我的程式,但又覺得上面寫的好麻煩,爬文也找不到更好的方案,最後我想到一個比較好的做法。

1
window.close()

沒錯,就這麼簡單,哈哈。上面提到window-all-closed所有 browserwindow 關閉會做app.quit()動作。所以不用管 browserwindow是什麼,但網路上沒有人寫這個方法,不知道有沒有安全性問題,但目前我評估應該是不會。

調整程式範例:解決多視窗關閉問題 · malagege/vue-electron-Pomodoro@f71d5b1 · GitHub

但發現 縮小/放大無法用 window 做到

目前沒有找到方法,網路有很多使用 remote 方法,不過新版好像因為安全性就不能使用。我目前想說子視窗就不做放大縮小按鈕,哈哈。目前只有想到單一window 特別做設定,沒有想到動態視窗一致方法,有想到好方法就補上。