Javascript 如何根据url在具有假帧或真帧的窗口之间切换

Javascript 如何根据url在具有假帧或真帧的窗口之间切换,javascript,vue.js,electron,vue-cli,Javascript,Vue.js,Electron,Vue Cli,我正在用electron创建一个应用程序,它以登录屏幕上带有假框的窗口开始。我想知道当应用程序url更改时,如何将frame属性从“false”更改为“true” 示例: let win = new BrowserWindow({ width: 1000, height: 650, frame: false, transparent: true }) win.webContents.on('did-navigate-in-page', (event) =>

我正在用electron创建一个应用程序,它以登录屏幕上带有假框的窗口开始。我想知道当应用程序url更改时,如何将frame属性从“false”更改为“true”

示例:

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)**
   }
})

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

我不相信电子目前提供了一种方法,可以在创建窗口后将窗口从无框更改为有框,或者反之亦然

另一种方法是,当您在应该是框架式或无框架的页面之间导航时,动态创建和销毁窗口。这显然有很多开销和内存中的数据丢失,因此只有在您只需要初始登录屏幕是无框架的情况下才实用。对于这种狭隘的情况,您可以执行以下操作:

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()
    }
})
我想,实验性的API还可以用于在两个或多个不同的窗口之间传送一个连续的
WebContent


如果您确实需要更频繁地添加和删除窗口chrome,另一个选项是自己绘制chrome。它不会有操作系统的本机风格,但它会有您需要的灵活性。下面是一个为您处理标题栏部分的包:。不确定是否需要可拖动的边框。

我不认为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()
    }
})
我想,实验性的API还可以用于在两个或多个不同的窗口之间传送一个连续的
WebContent


如果您确实需要更频繁地添加和删除窗口chrome,另一个选项是自己绘制chrome。它不会有操作系统的本机风格,但它会有您需要的灵活性。下面是一个为您处理标题栏部分的包:。不确定是否需要拖动边框。

正如您所提到的,打开新窗口时效果良好,但我会丢失数据。通过这种方式,我将尝试重新调整我的应用程序,使其具有另一种外观。谢谢你的回答。正如你提到的,当打开一个新窗口时,它工作得很好,但我丢失了数据。通过这种方式,我将尝试重新调整我的应用程序,使其具有另一种外观。谢谢你回答我。