ApplicationMenu(画面上部のメニューバー)カスタム処理をmain-processへ移動した。
electron 12へ移行するための対応の一部。
(移行作業としてはelectron11で移行作業をしてから12にアップデートするつもり)。
``` エラーメッセージ
Uncaught ReferenceError: require is not defined
at menu.js:3
```
```menu.js:3
const remote = require('electron').remote;
```
だが根本的にはMenuはmein-processでいじるものになっていた模様。
electron-api-demos ではそうしている。
```electron-api-demos main.js
function loadDemos () {
const files = glob.sync(path.join(__dirname, 'main-process/**/*.js'))
files.forEach((file) => { require(file) })
}
```
ただしこの時点でelectron-api-demosはelectron9を使っていた。
(いろいろ言いたいことはあるが略)
Before:
``` index.html
<script type="text/javascript" src="./js/menu.js"></script>
```
After:
```
require(path.join(__dirname, 'js/menu.js'))
```
これだけでもMenuカスタムが動作するようになってしまう。
ようは` Menu.setApplicationMenu()`を呼んでしまえばOKのようだが、electron-api-demosではコールバックに仕込むことをオススメしている模様。
```
app.on('ready', () => {
const menu = Menu.buildFromTemplate(template) // テンプレートを変数に格納
Menu.setApplicationMenu(menu)
})
```
これをすることで、Menuカスタムは動作するし、Quit(App.quit()呼び出し)などは動作するが、Rendererに持たせたmoduleを呼び出す機能は動作しない。
そちらは後でpreload.js, ipcRendererなどを使う方式へ移行するとして、とりあえず次は右クリックのContextMenu。
0 件のコメント:
コメントを投稿