TL; DR :每次打开包含菜单时,我都需要检查是否禁用或启用菜单项。我该怎么办?
详细信息:在Electron应用程序的主菜单中,我有一个菜单项,只有当用户在剪贴板中有某种数据时才能启用它 - 将其视为特定的一种粘贴功能。
访问剪贴板并评估数据的有效性很简单,但只有在打开包含此特定项目的菜单时,我才能找到执行评估的方法。
数据将来自我的应用程序外部,因此每当窗口的焦点事件触发时,我都可以检查剪贴板的内容。另一种选择是进行民意调查。两者都不是很优雅,我希望有更明智的方法。
答案 0 :(得分:2)
电子通过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。我实际上没有测试过代码,但它应该勾勒出一个解决方案。
有关未来可能解决方案的其他信息:
截至2016年6月底,电子开发团队目前正在开发两种可能的解决方案: