📚
Electronでリンククリック時にデフォルトブラウザで開きたい
Electronで起動したアプリにて、画面内の <a href="...">
のリンクをクリックすると、Electron内のブラウザで開かれてしまいます。
これを、端末のデフォルトブラウザで開くようにしたかったのですが、日本語の記事は誤った情報しか見つからず、彷徨った結果 Electron の github issue で解決策が見つかりました。
その方法は、メインプロセスにて以下のとおり、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