无法打开带有target = blank的Electron webview链接

时间:2018-02-21 20:06:24

标签: webview window electron

我正在使用Electron我有一个webview,显示一个外部网站,但我无法显示通常由此网站上的链接打开的附加窗口,其中有target = _blank。

<a href="mentions.html" target="_blank">Mentions légales </a> 

我试过

webpreferences="nativeWindowOpen=yes" allowpopups

但它没有改变。

2 个答案:

答案 0 :(得分:2)

使用webview,您可以非常轻松地在主流程上处理这些内容。

如果需要,还允许您禁用nodeIntegration。

// Listen for web contents being created
app.on('web-contents-created', (e, contents) => {

  // Check for a webview
  if (contents.getType() == 'webview') {

    // Listen for any new window events
    contents.on('new-window', (e, url) => {
      e.preventDefault()
      shell.openExternal(url)
    })
  }
})

答案 1 :(得分:0)

在深入研究文档后,我编写了这段代码(代码位于渲染器中):

const {BrowserWindow} = require('electron').remote

..........

 webview1.addEventListener('new-window', (e) => {
    const protocol = require('url').parse(e.url).protocol
    if (protocol === 'http:' || protocol === 'https:') {
      //shell.openExternal(e.url)
      let win = new BrowserWindow({width: 800, height: 600})
      win.loadURL(e.url);
    }
  })

shell.openExternal(e.url)在默认浏览器的标签中打开链接的网址。 通过使用新的BrowserWindow,新窗口是Electron Window。