请给我一个简单的指南,在不聚焦的情况下给电子窗玻璃
我从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);
});
答案 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-focus和browser-window-blur,并且关联的回调函数使用两个参数:event
和browserWindow
。
答案 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();
});
});