📚

Electronでリンククリック時にデフォルトブラウザで開きたい

2023/04/08に公開

Electronで起動したアプリにて、画面内の <a href="..."> のリンクをクリックすると、Electron内のブラウザで開かれてしまいます。
これを、端末のデフォルトブラウザで開くようにしたかったのですが、日本語の記事は誤った情報しか見つからず、彷徨った結果 Electron の github issue で解決策が見つかりました。

https://github.com/electron/electron/issues/1344#issuecomment-963511467

その方法は、メインプロセスにて以下のとおり、mainWindow.webContents.setWindowOpenHandlerを追加すればOKでした。

main.js
onst { app, BrowserWindow, shell } = require('electron')
const path = require('path')

const createWindow = () => {
  const mainWindow = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      preload: path.join(__dirname, 'preload.js')
    }
  })

  mainWindow.loadFile('index.html')

  // 以下を追加
  mainWindow.webContents.setWindowOpenHandler(({ url }) => {
    if (url.startsWith('http')) {
        shell.openExternal(url)
    }
    return { action: 'deny' }
})

どなたかの役に立てば幸いです。

Discussion