古い Electron のバージョンで作ってたもので JavaScript の新機能を使って機能追加したかったのでバージョンを上げてみた
最新が 18 なので 10 以上バージョンが上がってる
多少は変更いるかと思ってたけど 大したことしてるツールじゃないから大丈夫だろうと思ってたらかなり辛い
まずページ内で require が使えない
context isolation とかいうのが自動で有効になったらしい
new BrowserWindow() 時のオプションで contextIsolation を false に指定すれば require が使えるようになった
Webview 関係も変わっていて target="_blank" があるリンクを開いたときにこれまでは new-window イベントが起きていた
そのイベントで webview.src に新規ウィンドウの URL を設定したら webview で新しいページに移動できた
今だと new-window イベントが起きない
allowpopups 属性もつければ new-window イベントは起きるけど 実際に新規ウィンドウが作られてしまう
new-window イベントで preventDefault しても効果なし
さらにブラウザ拡張機能みたいに webview 内でも context isolation が行われてる
preload 内で webview ページのビルトイン関数を上書きして Electron のページ側に関数呼び出しされたことを通知してたのにそれが動かない
上書きされたのは preload のコンテキスト内だけなのでページ側の処理で呼び出される関数は上書きできてない
面倒が多いし 古い Electron のままでいいやってなった
JavaScript の新機能が使えないのは不便だけどそんなに更新するものじゃないし