浮云間
2021-08-26 15:04:13
我有一個(gè)基于 Electron 的瀏覽器,比如需要渲染客戶端應(yīng)用程序的應(yīng)用程序。我很想使用電子的 webivew 來(lái)呈現(xiàn)我的應(yīng)用程序,但不推薦使用它們,并且默認(rèn)情況下也是禁用的。同樣由于 webviews 后面的 Chromium OOPIF(進(jìn)程外 IFrames)架構(gòu),它不再可能捕獲對(duì)我的應(yīng)用程序至關(guān)重要的鍵盤和鼠標(biāo)事件。所以我使用較新的 BrowserView api 并使用它來(lái)呈現(xiàn)我的客戶端 Web 應(yīng)用程序。但遺憾的是,我只能使用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 問(wèn)題和官方文檔,但找不到任何東西。有沒(méi)有人找到一種方法來(lái)捕獲鼠標(biāo)事件以及從 BrowserView 內(nèi)部?任何幫助將不勝感激。
1 回答

慕森王
TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超3個(gè)贊
通過(guò)對(duì)瀏覽器視圖使用預(yù)加載 webPreferences,您可以在其中使用 ipcRenderer,其中 preload.js 腳本將在
document.addEventListener('click', (event) => {
ipcRenderer.send('something', event);
});
在主電子js中,您必須使用預(yù)加載并調(diào)用ipc main來(lái)捕獲鼠標(biāo)數(shù)據(jù)
let view = new BrowserView({
webPreferences: {
preload: path.join(__dirname, 'preload.js'),
}
});
ipcMain.on('something', function (event, arg) {
// your code here
})
添加回答
舉報(bào)
0/150
提交
取消