【发布时间】:2019-06-12 14:17:19
【问题描述】:
我在 Electron 5.0.3 中工作,我想隐藏一个 BrowserView 以便不需要重新创建 BrowserView。我对如何实现这一点没有任何偏好。任何解决方案(JS、CSS 等)都足够了。
我查看了BrowserView documentation,但我认为这里没有任何帮助,将 BrowserView 移动到屏幕外的某个地方并不完全理想。
【问题讨论】:
标签: electron
我在 Electron 5.0.3 中工作,我想隐藏一个 BrowserView 以便不需要重新创建 BrowserView。我对如何实现这一点没有任何偏好。任何解决方案(JS、CSS 等)都足够了。
我查看了BrowserView documentation,但我认为这里没有任何帮助,将 BrowserView 移动到屏幕外的某个地方并不完全理想。
【问题讨论】:
标签: electron
我知道这是旧的,但我遇到了这个解决方案的问题并有替代方案。
在某些情况下,从 BrowserWindow 中删除 BrowserView 可能会产生一些意想不到的后果。我发现如果您使用BrowserView 托管外部内容,而删除和设置似乎保留了内容,您可能会失去一些通过代码(例如通过view.webContents.executeJavaScript())或在某些情况下用户界面与其交互的能力调用异步事件的控件有时会完全停止工作。
如果您只想隐藏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() 之间存在差异。前者将从BrowserWindow 中删除所有其他BrowserViews(这意味着如果您也在设置视图,则无需显式删除视图,并且如果您正在使用添加,则需要管理您的视图。)
【讨论】:
第一个解决方案(最佳):
browserWindow.addBrowserView(browserView)
browserWindow.removeBrowserView(browserView)
addBrowserView() & removeBrowserView()。移除浏览器视图和隐藏一样,不会让浏览器视图重新渲染。
次要解决方案(非最佳):
// not optimal if you call more than once because it will constantly add more CSS
browserView.webContents.insertCSS('html{display: block}')
browserView.webContents.insertCSS('html{display: none}')
【讨论】:
BrowserView ?状态每次都会丢失。