检测点击电子托盘应用程序的 popUpContextMenu 项目点击
Detect a click on popUpContextMenu item click for Electron Tray Application
我试图创建一个名为“清除缓存”的右键单击菜单项,它清除了我正在工作的程序的缓存on.The问题是使用 ipcMain 发送事件的函数正在获取 运行 右键单击托盘项目,而不是单击实际的“清除缓存”按钮时。这是因为我的菜单设置如下:
// clear cache function
const clearCache = () => {
let response = "Successfully cleared cache.";
mainWindow.webContents.send('clearCacheResponse', response);
console.log(response)
};
const menu = [
{ label: '╸Clear all Cache╺', role: clearCache() },
{ label: 'Separator', type: 'separator'},
{ label: '╸Quit Rich Presence╺', role: 'quit' },
];
tray.popUpContextMenu(Menu.buildFromTemplate(menu))
其中标签中的角色是一个函数。这个问题是它 运行s 当对象第一次初始化时,这意味着它会在您第一次右键单击时清除缓存。有没有其他方法可以使用 Electron 的 popUpContextMenu 运行 自定义函数,或者我是否坚持尝试找到解决方法。我已经做了相当多的研究,但还没有找到一种方法来仅在单击时触发此事件 label.Here 是我试图创建的右键单击上下文菜单的完整代码:
rightClick = () => {// clear cache function
const clearCache = () => {
let response = "Successfully cleared cache.";
mainWindow.webContents.send('clearCacheResponse', response);
console.log(response)
};
const menu = [
{ label: '╸Clear all Cache╺', role: clearCache() },
{ label: 'Separator', type: 'separator'},
{ label: '╸Quit Rich Presence╺', role: 'quit' },
];
tray.popUpContextMenu(Menu.buildFromTemplate(menu))}
tray.on('right-click', () => {
rightClick()
});
TL:DR;我的函数 运行s 当对象首次初始化时,试图找到一些方法来仅在单击上下文菜单项的标签时触发该函数。
试过:
要创建右键单击上下文菜单,您可以在其中右键单击并具有以下选项:
- 清除缓存
- 退出应用程序
我期待的是:
打开菜单并选择正确的选项,并使该选项正确出现。
实际发生了什么:
Clearing Cache 函数 运行 在我第一次初始化菜单对象时立即清除,这意味着每次右键单击时都会清除用户的缓存。
我正在使用:
role: clearCache()
。
为自定义函数编写此代码的正确方法是:
click: clearCache
(感谢 vanowm 告诉我如何解决这个问题,直到现在我才意识到这在文档中!)
我试图创建一个名为“清除缓存”的右键单击菜单项,它清除了我正在工作的程序的缓存on.The问题是使用 ipcMain 发送事件的函数正在获取 运行 右键单击托盘项目,而不是单击实际的“清除缓存”按钮时。这是因为我的菜单设置如下:
// clear cache function
const clearCache = () => {
let response = "Successfully cleared cache.";
mainWindow.webContents.send('clearCacheResponse', response);
console.log(response)
};
const menu = [
{ label: '╸Clear all Cache╺', role: clearCache() },
{ label: 'Separator', type: 'separator'},
{ label: '╸Quit Rich Presence╺', role: 'quit' },
];
tray.popUpContextMenu(Menu.buildFromTemplate(menu))
其中标签中的角色是一个函数。这个问题是它 运行s 当对象第一次初始化时,这意味着它会在您第一次右键单击时清除缓存。有没有其他方法可以使用 Electron 的 popUpContextMenu 运行 自定义函数,或者我是否坚持尝试找到解决方法。我已经做了相当多的研究,但还没有找到一种方法来仅在单击时触发此事件 label.Here 是我试图创建的右键单击上下文菜单的完整代码:
rightClick = () => {// clear cache function
const clearCache = () => {
let response = "Successfully cleared cache.";
mainWindow.webContents.send('clearCacheResponse', response);
console.log(response)
};
const menu = [
{ label: '╸Clear all Cache╺', role: clearCache() },
{ label: 'Separator', type: 'separator'},
{ label: '╸Quit Rich Presence╺', role: 'quit' },
];
tray.popUpContextMenu(Menu.buildFromTemplate(menu))}
tray.on('right-click', () => {
rightClick()
});
TL:DR;我的函数 运行s 当对象首次初始化时,试图找到一些方法来仅在单击上下文菜单项的标签时触发该函数。
试过: 要创建右键单击上下文菜单,您可以在其中右键单击并具有以下选项:
- 清除缓存
- 退出应用程序
我期待的是: 打开菜单并选择正确的选项,并使该选项正确出现。
实际发生了什么: Clearing Cache 函数 运行 在我第一次初始化菜单对象时立即清除,这意味着每次右键单击时都会清除用户的缓存。
我正在使用:
role: clearCache()
。
为自定义函数编写此代码的正确方法是:
click: clearCache
(感谢 vanowm 告诉我如何解决这个问题,直到现在我才意识到这在文档中!)