小编Gau*_* Kc的帖子

Electron webview 新窗口事件返回 `about:blank` 作为 Url

我有一个基于 Electron 的浏览器,如应用程序,它使用 Electron 的标签来呈现客户端 URL。我使用多个 webview 标签设置了自己的自定义选项卡。

如电子文档中所述,我使用该new-window事件来处理在新选项卡中打开 url 的页面请求。它可以由 window.open 或外部链接(如<a target='_blank'>.

我的代码在大多数情况下运行良好,当指定了 url 而不是稍后动态添加时。

const webview = document.querySelector('webview')

webview.addEventListener('new-window', (e) => {
  const url = e.url;
  // used url to render new tabs.
})
Run Code Online (Sandbox Code Playgroud)

最近我有一个客户端登录 url,加载时有一个按钮。该按钮没有锚标记,也没有指定预定义的 url。在 chrome 中打开时,单击按钮会导致在一个全新的窗口中打开外部链接。新窗口在网址栏中简要显示“about:blank”,然后重定向到实际网址。
当我尝试new-window在我的电子 web 视图中使用事件拦截相同的外部 url 时,该事件返回了 url,about:blank我无法访问重定向的 url。有没有其他人遇到过同样的问题?

javascript electron

6
推荐指数
1
解决办法
1918
查看次数

Electron BrowserView 不捕获鼠标事件

我有一个基于 Electron 的浏览器,比如需要渲染客户端应用程序的应用程序。我很想使用电子的 webivew 来呈现我的应用程序,但不推荐使用它们,并且默认情况下也是禁用的。同样由于 webviews 后面的 Chromium OOPIF(进程外 IFrames)架构,它不再可能捕获对我的应用程序至关重要的键盘和鼠标事件。

所以我使用较新的 BrowserView api 并使用它来呈现我的客户端 Web 应用程序。但遗憾的是,我只能使用before-input-event事件捕获键盘事件。

这是我的代码示例。

let mainWindow = null;

app.on('ready', () => {
  mainWindow = new BrowserWindow({ show: false });
  mainWindow.setBounds({ x: 0, y: 0, width: 800, height: 600 })
  mainWindow.once('ready-to-show', () => {
    mainWindow.show();
  });

  let view = new BrowserView()
  mainWindow.setBrowserView(view)
  view.webContents.loadURL('https://electronjs.org')
  view.webContents.on('before-input-event', (event, input) => {
    console.log(event, input);
  });
});
Run Code Online (Sandbox Code Playgroud)

我查看了电子的 github 问题和官方文档,但找不到任何东西。有没有人找到一种方法来捕获鼠标事件以及从 BrowserView 内部?任何帮助将不胜感激。

javascript electron

6
推荐指数
1
解决办法
1239
查看次数

标签 统计

electron ×2

javascript ×2