《Electron - setWindowOpenHandler》拦截window.open

327 阅读1分钟

setWindowOpenHandler

image.png

使用场景

通常应用中可能会嵌入一个web页面,web页面中可能也会有打开新的页面,这个时候我们想要对新页面的打开进行拦截处理,例如:端内直接打开或者是跳转到外部浏览器打开。 示例代码:

mainWindow.webContents.setWindowOpenHandler((details)=>{
    console.log('details', details)
    return {
      action: 'allow',
      overrideBrowserWindowOptions: {
        fullscreen: true
      }
    }
})

添加一个回调函数,返回值为:

({action: 'deny'}) | ({action: 'allow', overrideBrowserWindowOptions?: BrowserWindowConstructorOptions})

  • {action: 'deny'} 取消打开新窗口
mainWindow.webContents.setWindowOpenHandler((details)=>{
    console.log('details', details)
    // 做一些自定义操作
    // 可以直接在此处进行创建 BrowserWindow 打开
    return {
      action: 'deny'
    }
})
  • {action: 'allow', overrideBrowserWindowOptions?: BrowserWindowConstructorOptions}

允许打开新窗口时,overrideBrowserWindowOptions 参数可以修改打开的窗口属性。