如何在Electron中隐藏(而不破坏)BrowserView

时间:2019-06-12 14:17:19

标签: electron

我正在使用 Electron 5.0.3 ,并且我想隐藏 BrowserView ,以便无需重新创建BrowserView。我对如何实现这一目标没有任何偏好。任何解决方案(JS,CSS等)都足够。

我已经浏览了BrowserView documentation,但是这里没有什么可以帮助我的,将BrowserView移到屏幕外的地方也不是很理想。

2 个答案:

答案 0 :(得分:2)

我知道这是旧的,但我遇到了这个解决方案的问题,并有一个替代方案。

在某些情况下,从 BrowserView 中删除 BrowserWindow 可能会产生一些意想不到的后果。我发现,如果您使用 BrowserView 来托管外部内容,而删除和设置似乎会保留内容,您可能会失去一些通过代码(例如通过 view.webContents.executeJavaScript())与之交互的能力,或者在某些情况下,调用异步事件的 UI 控件有时会完全停止工作。

如果您只想隐藏 BrowserView,将边界设置为 0 效果非常好:

  view.setBounds({ x: 0, y: 0, width: 0, height: 0 })

然后使用主机 BrowserWindow 维度恢复它:

  let wb = win.getBounds()
  view.setBounds({ x: 0, y: 0, width: wb.width, height: wb.height })

旁注:setBrowserView()addBrowserView() 之间存在差异。前者将从 BrowserViews 中删除所有其他 BrowserWindow(这意味着如果您还设置了视图,则无需显式删除它,并且如果您正在使用添加,则需要管理您的视图。)

答案 1 :(得分:0)

第一个解决方案(最佳):

browserWindow.addBrowserView(browserView)
browserWindow.removeBrowserView(browserView)

addBrowserView()removeBrowserView()。删除浏览器视图与隐藏相同,它不会使browserView重新呈现。

次要解决方案(并非最佳):

// not optimal if you call more than once due it constantly adding more CSS
browserView.webContents.insertCSS('html{display: block}')
browserView.webContents.insertCSS('html{display: none}')

insertCSS()