当应用程序在Windows上全屏显示时隐藏窗口菜单?

时间:2017-08-23 23:39:16

标签: javascript electron

我在OSX和Windows上运行了一个Electron应用程序。当Windows版本全屏时它仍然显示一个菜单栏,我不希望它。基本上我想要在OSX上发生的事情:当应用程序是“全屏”时,不会出现菜单栏或窗口“chrome”。

我在设置窗口期间尝试了setAutoHideMenuBar,但没有任何区别。我使用它是错误的还是误解了它所支持的内容?

我在setMenu(null)看到了一些质量保证建议,但不会完全打破菜单吗?我确实想要在窗口模式下使用菜单,或者在按下Alt键时(在Windows上)。

   mainWindow = new BrowserWindow({
        show: false,
        width: 1024,
        height: 768,
        minWidth: 400,
        minHeight: 200,
        resizable: true,
        backgroundColor: '#222',
        center: true,
        setAutoHideMenuBar: true
    });

来自docs

  

win.setAutoHideMenuBar(隐藏)

hide Boolean
     

设置窗口菜单栏是否应自动隐藏。   设置后,菜单栏将仅在用户按下单个Alt时显示   键。

     

如果菜单栏已经可见,则调用setAutoHideMenuBar(true)   不会立即隐藏它。

来自docs

  

win.setMenuBarVisibility(可见)Windows Linux

visible Boolean
     

设置菜单栏是否可见。如果菜单栏是   自动隐藏,用户仍然可以按下菜单栏   单个Alt键。

来自docs

  

win.setMenu(菜单)Linux Windows

menu Menu
     

将菜单设置为窗口的菜单栏,将其设置为null将删除   菜单栏。

2 个答案:

答案 0 :(得分:1)

使用setFullScreen方法。

function (item, focusedWindow) {
    if (focusedWindow) {
        focusedWindow.setFullScreen(!focusedWindow.isFullScreen())
    }
}

答案 1 :(得分:1)

我的错误和“去图”

  1. 我误用了setAutoHideMenuBar命令,试图在创建窗口时将其用作选项。正确的选项语法是autoHideMenuBar: true
  2. app.on('ready', function () {
        mainWindow = new BrowserWindow({
            show: false,
            width: 1024,
            height: 768,
            minWidth: 400,
            minHeight: 200,
            resizable: true,
            backgroundColor: '#222',
            center: true,
            autoHideMenuBar: true
        }); 
    
    1. 要处理全屏切换,在设置菜单时我使用了快捷方式

      role: 'togglefullscreen'

    2. 虽然这样做并且包括键盘加速器,但菜单栏始终显示,autoHideMenuBar设置显然被忽略。我不明白为什么。因此,我使用此菜单栏而不是快捷方式,而是正确隐藏。

                  {
                      label: 'Toggle Full Screen',
                      click: () => { toggleFullscreen();},
                      accelerator: 'CmdOrCtrl+f'
                  }
      
      function toggleFullscreen() {
          if (mainWindow.isFullScreen()) {
              mainWindow.setFullScreen(false);
          } else {
              mainWindow.setFullScreen(true);
          }
      }
      
相关问题