У меня есть Electron BrowserWindow
, который содержит элементы пользовательского интерфейса и BrowserView
, созданный с помощью:
bv = createBrowserView('https://example.com');
...
browserWindow.setBrowserView(bv);
Как ограничить этот BrowserView URL-адресами вида ***.example.com/***
, т.е. остаться на домене example.com
?
Точнее, если пользователь нажимает на гипертекстовую ссылку, выходящую за пределы этого домена, она должна открываться во внешнем приложении, например в системном браузере по умолчанию, но не в приложении Electron.
Как это сделать с помощью Electron BrowserView?
Это работает:
bv.webContents.on('will-navigate', (event, url) => {
console.info('will-navigate', url);
if (condition_on_the_url) {
shell.openExternal(url); // length limit on Windows: https://www.electronjs.org/docs/api/shell#shellopenexternalurl-options
event.preventDefault();
}
});
Примечание: событие new-window
также полезно, когда пользователь нажимает на ссылку с target = "_blank"
.