当电子窗不聚焦时,如何给玻璃加玻璃?

时间:2019-02-16 22:12:39

标签: javascript html css electron

请给我一个简单的指南,在不聚焦的情况下给电子窗玻璃

我从https://github.com/electron/electron/issues/1985找到了一个事件(代码在下面),但我不知道如何使用它。而且我找不到一种方法来对focusedWindow进行玻璃化(来自:https://github.com/electron/electron/blob/master/docs/api/browser-window.md#winfocus

var app = require('app');

app.on('focused-window', function (focusedWindow) {
  doSomethingWithTheFocusedWindow(focusedWindow);
});

2 个答案:

答案 0 :(得分:2)

这在macOS上对我有效:

app.on ('browser-window-blur', function (event, browserWindow)
{
    browserWindow.setOpacity (0.5);
});
//
app.on ('browser-window-focus', function (event, browserWindow)
{
    browserWindow.setOpacity (1.0);
});

自您提到的提案以来,应用程序事件界面似乎已经有所发展。这些事件分别命名为browser-window-focusbrowser-window-blur,并且关联的回调函数使用两个参数:eventbrowserWindow

答案 1 :(得分:1)

在更仔细地考虑了您的问题之后,看来您似乎在app,BrowserWindow和电子中的某些其他组件之间有些困惑。这是一个更详细的示例,希望将所有部分都绑在一起。

简而言之,该应用程序称为main process,实际上它本身并不是浏览器窗口(也称为renderer process)。您必须创建所需的任何窗口。如果需要,可以通过Inter-Process Communication channels处理主进程和渲染器进程之间的通信。

const { app, BrowserWindow } = require('electron');
app.on('ready', () => {
  let child = new BrowserWindow({ parent: top, show: false });
  child.loadURL('https://github.com');
  child.on('focus', () => { child.setOpacity(1); });
  child.on('blur', () => { child.setOpacity(0.5); });
  child.once('ready-to-show', () => {
    child.show();
  });
});