如何在带有假框或真框的窗口之间切换电子,具体取决于url



我正在电子中创建一个应用程序,该应用程序从登录屏幕上带有假框的窗口开始。我想知道如何将框架属性从";false";至";真";当应用程序url更改时。

示例:

let win = new BrowserWindow({
width: 1000,
height: 650,
frame: false,
transparent: true
})
win.webContents.on('did-navigate-in-page', (event) => {
if(win.webContents.getURL() == 'http://localhost:8080/#/'){
**win.setFrame(false)**
}else{
**win.setFrame(true)**
}
})

如果你能帮助我,我非常感谢。我希望我已经很好地解释了我需要什么。

我不认为Electron目前提供了一种方法,可以在创建窗口后将其从无框架更改为有框架,反之亦然。

一种替代方案是在应该是框架或无框架的页面之间导航时,动态创建和销毁窗口。这显然有很多开销,并且会丢失内存中的数据,因此只有当您只需要初始登录屏幕是无框架的时,这才是实用的。对于这种狭窄的情况,你可以这样做:

let loginWin = new BrowserWindow({
width: 1000,
height: 650,
frame: false,
transparent: true
})
loginWin.webContents.on('did-navigate-in-page', (event) => {
if(loginWin.webContents.getURL() == 'http://localhost:8080/#/'){
let mainWin = new BrowserWindow({
width: 1000,
height: 650
})
mainWin.loadURL('http://localhost:8080/#/')
loginWin.destroy()
}
})

我想,实验性的BrowserView API也可以用于在两个或多个不同的窗口之间传送一个连续的webContents

如果你确实需要更频繁地添加和删除窗口铬,另一个选择是自己绘制铬。它不会有操作系统的原生风格,但它会有您需要的灵活性。这里有一个为您处理标题栏部分的软件包:无框标题栏。不确定可拖动边界,如果也需要的话。

最新更新