我在Electron5.0.3中工作,我想隐藏一个 BrowserView ,这样BrowserView就不需要重新创建了。对于应该如何实现这一点,我没有任何偏好。任何解决方案(JS、CSS等)就足够了。
我已经看过BrowserView documentation了,但我看不到任何有帮助的东西,而且把BrowserView移到屏幕外的某个地方也不是很理想。
发布于 2019-06-12 23:49:21
第一个解决方案(最优):
browserWindow.addBrowserView(browserView)
browserWindow.removeBrowserView(browserView)
addBrowserView() & removeBrowserView().删除浏览器视图等同于隐藏,它不会使browserView重新呈现。
次要解决方案(非最佳):
// 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}')
发布于 2021-02-22 02:13:32
我知道这是旧的,但我遇到了这个解决方案的问题,并有一个替代方案。
有些情况下,从BrowserWindow
中删除BrowserView
可能会产生一些意想不到的后果。我发现,如果你使用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()
是有区别的。前者将从BrowserWindow
中删除所有其他BrowserViews
(这意味着如果同时设置视图,则不需要显式删除该视图,如果使用add,则需要管理视图)。
https://stackoverflow.com/questions/56564344
复制相似问题