在BrowserView或Webview内使用Youtube全屏按钮时,如何阻止电子窗口进入全屏状态

时间:2019-05-18 16:33:23

标签: javascript electron

我正在制作一个具有BrowserWindow或Webview的应用程序,允许用户浏览Internet。使用Youtube时,如果单击全屏按钮,我的整个Electron应用程序将变为全屏。不是视频,而是我的整个应用程序,然后退出全屏,我必须使用Youtube的全屏按钮。这是它的外观图像:

 tag

在此图像中,我的整个应用程序处于全屏模式。有没有办法阻止这种情况的发生?我喜欢BrowserView本身具有全屏显示的Youtube视频,但我不喜欢我的整个应用程序变为全屏显示。所有带有全屏按钮的视频都会发生这种情况,例如Twitch。

-谢谢

编辑:我发现了一个潜在的临时解决方法。如果将BrowserWindow选项“ fullscreenable”设置为false,那么将fullscreenable:false设置为false,它将阻止BrowserView中的视频使我的应用程序全屏显示,同时仍然填充BrowserView。我仍然对是否还有另一种方法可以实现这一点感兴趣。

1 个答案:

答案 0 :(得分:1)

我知道这是旧的,但我有同样的问题。 不幸的是,您找到的选项最简单。

设置fullscreen: false的问题是,当您实际需要通过窗口控件时,您将失去全屏显示的能力。

有些钩子可以区分窗口调用的全屏和HTML,但是它们是在事实之后并且不可取消(enter-html-full-screenenter-full-screen)。

我正在使用的选项是:

  win.on('enter-html-full-screen', function () {
    if (win.isFullScreen()) {
      setTimeout(function() {
        win.setFullScreen(false)
        win.maximize()
      }, 1000)
    }
  })

您必须等待窗口完成向全屏的移动,从而超时。如果您退出isFullScreen,您会看到它立即被调用,但是当您尝试将其设置为false而没有超时时,会立即收到一条日志,指出该窗口未处于全屏状态。

此解决方案使窗口最大化,这可能是不希望的。相反,您可以将窗口恢复为先前的尺寸,但是会得到橡皮筋效果。

另一种选择是在使用窗口控件时将窗口切换为fullScreen: true,然后通过IPC将其切换回关闭状态,但是我找不到直接的方法。我们需要pre-enter-html-fullscreen才能取消。