【问题标题】:How to glass an electron window when it's not focused?没有聚焦时如何玻璃化电子窗口?
【发布时间】:2019-02-17 07:06:19
【问题描述】:

请给我一个简单的指南,让我在没有聚焦时玻璃电子窗,

我从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.5 或以某种方式透明
  • 您可以使用setOpacity,尽管这只适用于 Windows 和 MacOS(而非 Linux)。它可以在窗口的blur and focus 事件中设置,以在它在后台时更改不透明度。

标签: javascript html css electron


【解决方案1】:

这适用于我在 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

【讨论】:

  • 嗯,我以前从未见过app 级别的焦点/模糊事件;如果您想对应用程序中的所有窗口应用回调,那真是太棒了!
  • 其实我也不知道...我刚刚发现,在我的一个应用程序中尝试过,它成功了! Electron 绝对很棒!
【解决方案2】:

在仔细查看您的问题后,您似乎对 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();
  });
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-06
    • 1970-01-01
    • 2013-06-19
    • 2010-10-02
    • 1970-01-01
    • 2019-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多