为了账号安全,请及时绑定邮箱和手机立即绑定

Electron BrowserView 不捕获鼠标事件

Electron BrowserView 不捕获鼠标事件

浮云间 2021-08-26 15:04:13
我有一个基于 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);  });});我查看了电子的 github 问题和官方文档,但找不到任何东西。有没有人找到一种方法来捕获鼠标事件以及从 BrowserView 内部?任何帮助将不胜感激。
查看完整描述

1 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

通过对浏览器视图使用预加载 webPreferences,您可以在其中使用 ipcRenderer,其中 preload.js 脚本将在


document.addEventListener('click', (event) => {

  ipcRenderer.send('something', event);

});

在主电子js中,您必须使用预加载并调用ipc main来捕获鼠标数据


let view = new BrowserView({

 webPreferences: {

  preload: path.join(__dirname, 'preload.js'),

 }

});


ipcMain.on('something', function (event, arg) {

  // your code here

})


查看完整回答
反对 回复 2021-08-26
  • 1 回答
  • 0 关注
  • 639 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信