javascript - 动态更改 Electron 的菜单项的状态

标签 javascript node.js electron

与任何标准 native 应用程序一样,我的 Electron 应用程序也需要根据实时使用结果更改多个菜单项的状态(启用/禁用)。

我在 main.js 中设置我的菜单:

function createWindow () {
...
...
  require('./menu/mainmenu');
}

我需要更改的 MenuItem 在主菜单中定义:

{ label: "Show Colors",  
        accelerator: 'CmdOrCtrl+1', 
        enabled: getStatus(),
        click() {getWebviewWebContents().send('switchToColors');} 
 },

其中 getStatus() 是返回 falsetrue 的函数。

所有这些在 Electron 中都不起作用,因为菜单是在应用程序启动时创建的,根本无法修改。我认为这是一个严重的缺陷,因为动态菜单项非常普遍(即:菜单复选框、启用/禁用等)。

有解决办法吗?

最佳答案

我已经通过为菜单项设置一个 Id 来解决这个问题,

{ label: "Show Colors",  
        id: 'color-scale',
        accelerator: 'CmdOrCtrl+1', 
        enabled: getStatus(),
        click() {getWebviewWebContents().send('switchToColors');} 
 },

并获取菜单项:

myItem = menu.getMenuItemById('color-scale')

然后,当我需要以编程方式启用/禁用它时,我正在使用:

myItem.enabled = true

myItem.enabled = false

关于javascript - 动态更改 Electron 的菜单项的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47756822/

相关文章:

node.js - Electron 奇怪的错误。未捕获的异常: TypeError [ERR_INVALID_ARG_TYPE]: The “path”

javascript - 如何将 blob url 数据保存在目录中

javascript - 无法在 Sencha-Touch2 中使用 Ext.Ajax 运行 javascript?

node.js - Nestjs 存储库模式配置挑战

node.js - 使用 NodeJS 为 Google Cloud Storage 创建签名 URL

angular - 如何用 Electron 外部化文件夹?

node.js - Electron 应用程序中的事件发射器内存泄漏

javascript - 在计时器上循环显示/隐藏 React 组件

javascript - React - 在渲染函数中从 var 调用处理程序

node.js - Node.js 中的异步或步骤