用window.open打开一个在所有工作区中可见的电子浮动窗口

时间:2018-12-16 01:14:38

标签: macos electron

我正在尝试从电子应用程序打开一个窗口,该窗口将浮在其他全屏应用程序之上

所以我从电子应用程序内部致电

openPauseWindow() {
  const options = [
    "width=600",
    "height=300",
    "frame=no",
    "transparent=yes",
    "alwaysOnTop=yes",
    "visibleOnAllWorkspaces=yes",
    "hasShadow=no"
  ].join(",");

  window.open("/apps/appoverlay/", "overlay", options);
}

这会打开一个浮动窗口,但是当我在另一个应用程序中进入全屏模式时,我的浮动窗口就会消失。尽管visibleOnAllWorkspaces=yes应该可以解决此问题。

我在macOS上,似乎也可能是个问题(?)

2 个答案:

答案 0 :(得分:0)

尝试使用window.open创建BrowserWindow而不是使用electron.remote

赞:

const { BrowserWindow } = require('electron').remote

let win = new BrowserWindow({ 
  width: 600, 
  height: 300,
  frame: false,
  transparent: true,
  alwaysOnTop: true,
  visibleOnAllWorkspaces: true,
  hasShadow: false
})

win.loadURL('/apps/appoverlay/')

答案 1 :(得分:0)

您可以使用以下代码

const { remote } = require('electron');
stopScreenShareWin = new remote.BrowserWindow({ 
                width: 400, 
                height: 40,                     
                show:true, 
                alwaysOnTop:true, 
                frame: false,
                titleBarStyle: 'hidden',
                visibleOnAllWorkspaces:true , 
                webPreferences: {
                    nodeIntegration: true
                }
            });
stopScreenShareWin.loadFile('calls/screenshare-overlay.html');  

停止此窗口

if(stopScreenShareWin){
  stopScreenShareWin.close();
  stopScreenShareWin=null;
}

您可以避免visibleOnAllWorkspaces:true

看起来像

enter image description here