如何在 window 中应用电子上下文菜单?
how to apply electron-context-menu in window?
我使用命令安装了 electron-context-menu
npm i electron-context-menu
然后我使用了这个 site
上的代码
const {app, BrowserWindow} = require('electron');
const contextMenu = require('electron-context-menu');
contextMenu({
showSaveImageAs: true
});
let mainWindow;
(async () => {
await app.whenReady();
mainWindow = new BrowserWindow({
webPreferences: {
spellcheck: true
}
});
})();
但是当我右键单击 window 时,没有出现带有项目的上下文菜单。
白色window只出现:
我应该怎么做才能让 ContextMeu 出现?
您不需要库来执行此操作(在我看来,您不应该这样做)。 electron API 已经给你一个 context-menu 可以使用了。
如果您已经在使用 contextBridge,只需按照 electron site steps.
main.ts
// ...
ipcMain.on('show-context-menu', (event) => {
const template = [
{
label: 'Menu Item 1',
click: () => { event.sender.send('context-menu-command', 'menu-item-1') }
},
{ type: 'separator' },
{ label: 'Menu Item 2', type: 'checkbox', checked: true }
]
const menu = Menu.buildFromTemplate(template)
menu.popup(BrowserWindow.fromWebContents(event.sender))
})
renderer.ts
window.addEventListener('contextmenu', (e) => {
e.preventDefault()
ipcRenderer.send('show-context-menu')
})
ipcRenderer.on('context-menu-command', (e, command) => {
// What it will do when this options is click it
})
如果需要,您也可以为每个操作创建一个 preload
另外,如果你想要浏览器默认的上下文菜单,.
我使用命令安装了 electron-context-menu
npm i electron-context-menu
然后我使用了这个 site
上的代码const {app, BrowserWindow} = require('electron');
const contextMenu = require('electron-context-menu');
contextMenu({
showSaveImageAs: true
});
let mainWindow;
(async () => {
await app.whenReady();
mainWindow = new BrowserWindow({
webPreferences: {
spellcheck: true
}
});
})();
但是当我右键单击 window 时,没有出现带有项目的上下文菜单。
白色window只出现:
我应该怎么做才能让 ContextMeu 出现?
您不需要库来执行此操作(在我看来,您不应该这样做)。 electron API 已经给你一个 context-menu 可以使用了。 如果您已经在使用 contextBridge,只需按照 electron site steps.
main.ts
// ...
ipcMain.on('show-context-menu', (event) => {
const template = [
{
label: 'Menu Item 1',
click: () => { event.sender.send('context-menu-command', 'menu-item-1') }
},
{ type: 'separator' },
{ label: 'Menu Item 2', type: 'checkbox', checked: true }
]
const menu = Menu.buildFromTemplate(template)
menu.popup(BrowserWindow.fromWebContents(event.sender))
})
renderer.ts
window.addEventListener('contextmenu', (e) => {
e.preventDefault()
ipcRenderer.send('show-context-menu')
})
ipcRenderer.on('context-menu-command', (e, command) => {
// What it will do when this options is click it
})
如果需要,您也可以为每个操作创建一个 preload
另外,如果你想要浏览器默认的上下文菜单,