gpt4 book ai didi

javascript - 在 Electron 中,在菜单打开时评估菜单项的状态

转载 作者:行者123 更新时间:2023-11-29 14:41:32 25 4
gpt4 key购买 nike

TL;DR:每次打开包含的菜单时,我都需要检查是禁用还是启用菜单项。我应该怎么做?

详细信息:在 Electron 应用程序的主菜单中,我有一个菜单项,只有当用户在剪贴板中有特定类型的数据时才应启用该菜单项 - 将其视为一种特定类型的粘贴功能.

访问剪贴板和评估数据的有效性很容易,但我找不到仅在打开包含该特定项目的菜单时执行评估的方法。

数据将来 self 的应用程序外部,因此我可以在窗口的焦点事件触发时检查剪贴板的内容。另一种选择是进行轮询。两者都不是很优雅,我希望有一种更明智的方法。

最佳答案

Electron 通过 menu.SetApplicationMenu(menu) function 公开菜单控件.

监听 window.focus 事件并在每次事件触发时通过远程模块设置此菜单应该使您能够实现所需的功能:

<!-- index.html -->
<script>
const {remote} = require('electron');
const {Menu, MenuItem} = remote;

const menu = new Menu();
menu.append(new MenuItem({label: 'MenuItem1', click() { console.log('item 1 clicked'); }}));


window.addEventListener('focus', (e) => { remote.setApplicationMenu(menu); }, true);

</script>

参见 electron menu API有关更多信息和上面的代码片段所基于的信息。我还没有实际测试代码,但它应该概述了一个解决方案。

关于 future 可能的解决方案的附加信息:

截至 2016 年 6 月底,Electron 开发团队目前正在开发两种可能的解决方案:

  1. 可能会引入一个新事件,该事件会在剪贴板发生变化时触发 (GitHub issue)
  2. 动态菜单可能是当前开发的重点(Github issue)

关于javascript - 在 Electron 中,在菜单打开时评估菜单项的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37775759/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com