无法在 NW.js 中切换窗口菜单栏可见性

Cannot toggle window menubar visibility in NW.js

本文关键字:窗口 菜单栏 可见性 NW js      更新时间:2023-09-26

我希望能够使菜单栏在特定时间出现/消失。

根据NW.js文档,将窗口的菜单属性设置为null会完全删除菜单栏。但是,当我使用以下脚本时,菜单栏仍然存在:

var gui = require('nw.gui');
var your_menu = new gui.Menu({ type: 'menubar' });
gui.Window.get().menu = your_menu;
gui.Window.get().menu = null;

我错过了什么?还是这是一个错误?

package.json文件中,您可以设置这些选项以及更多选项。其中就是您想要的那个。只需复制所需的选项,您不需要全部,这只是您可能想要的示例列表。

{
  "main": "index.html",
  "name": "nw-demo",
  "description": "demo app of node-webkit",
  "version": "0.1.0",
  "keywords": [ "demo", "node-webkit" ],
  "window": {
    "title": "node-webkit demo",
    "icon": "link.png",
    "toolbar": true,
    "frame": false,
    "width": 800,
    "height": 500,
    "position": "mouse",
    "min_width": 400,
    "min_height": 200,
    "max_width": 800,
    "max_height": 600
  },
  "webkit": {
    "plugin": true
  }
}

您感兴趣的是:

"toolbar": false,

嵌套在"window": {选项内。

这是一个工作示例。

如果将此脚本块添加到index.html 中,它将显示一个菜单栏,其中包含具有Hide命令的单个菜单。

单击Hide可以切换菜单栏可见性,就像您尝试的那样。

<script>
  addHideableMenu();
  function addHideableMenu(){
    let win = nw.Window.get();
    let mnu = new nw.Menu({ type: 'menubar' });
    let submenu = new nw.Menu();
    submenu.append(new nw.MenuItem( { label: 'Hide', click: function() { win.menu = null; }}));
    mnu.append(new nw.MenuItem({ label: 'Menu', submenu: submenu }));
    win.menu = mnu;
  }
  
</script>