1.new-window不在使用
在最新的electron中,提供的webview不再支持new-window事件,可以去electron官网上进行查看electron.nodejs.cn/docs/latest…
故采用以下替代方案
2.主进程使用setWindowOpenHandler
1.主进程中
mainWindow 为你创建的window mainWindow = new BrowserWindow(...)
mainWindow.webContents.on('did-attach-webview',
(e, webContent)=> {
console.log(webContent)
webContent.setWindowOpenHandler((details)=>{
console.log(details)
//把拦截到事件给到渲染进程
mainWindow.webContents.send('webview-new-window', webContent.id, details)
return {action:'deny'}
})});
webContent 就是你mainWindow的webview,通过setWindowOpenHandler进行设置
2.渲染进程
window.electron.ipcRenderer.on('webview-new-window',
(event: Event, data,details): void => {
console.log(event)
console.log(data)
console.log(details)
//进行自己处理
handleNewWindowOpen(details)})
注意webview 标签要加上allowpopups属性,否则主进程监听不到