Как включить щелчок правой кнопкой мыши с помощью Electron BrowserWindow и BrowserView? - PullRequest
0 голосов
/ 15 марта 2019

У меня есть BrowserView внутри BrowserWindow (мне действительно нужны оба):

const { app, BrowserWindow, BrowserView } = require('electron');

app.on('ready', () => {
    browserWindow = new BrowserWindow({ width: 800, height: 500, frame: false });
    bv = new BrowserView({ webPreferences: { nodeIntegration: false }});
    bv.setBounds({ x: 0, y: 30, width: 800, height: 470});
    bv.webContents.loadURL('https://old.reddit.com');
    browserWindow.setBrowserView(bv);
});

Если щелкнуть правой кнопкой мыши веб-страницы, ничего не происходит. Как включить щелчок правой кнопкой мыши, чтобы в браузере Chrome были «Назад», «Вперед», «Перезагрузить», «Копировать», «Вставить» и т. Д. Как обычно?

enter image description here

1 Ответ

3 голосов
/ 15 марта 2019

Электрон имеет несколько образцов меню на своих документах, расположенных по адресу https://electronjs.org/docs/api/menu

// Importing this adds a right-click menu with 'Inspect Element' option
const remote = require('remote')
const Menu = remote.require('menu')
const MenuItem = remote.require('menu-item')

let rightClickPosition = null

const menu = new Menu()
const menuItem = new MenuItem({
  label: 'Inspect Element',
  click: () => {
    remote.getCurrentWindow().inspectElement(rightClickPosition.x, rightClickPosition.y)
  }
})
menu.append(menuItem)

window.addEventListener('contextmenu', (e) => {
  e.preventDefault()
  rightClickPosition = {x: e.x, y: e.y}
  menu.popup(remote.getCurrentWindow())
}, false)

Следуя этому шаблону, вы можете установить пользовательские роли, такие как Back, Forward, Reload и т. Д., Используя пользовательский javascript, например:

Back
const backMenuItem = new MenuItem({
  label: 'Back',
  click: () => {
    window.history.back();
  }
})
menu.append(backMenuItem)

Forward
const forwardMenuItem = new MenuItem({
  label: 'Forward',
  click: () => {
    window.history.forward();
  }
})
menu.append(forwardMenuItem)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...