【问题标题】:Only hide the window when closing it [Electron]仅在关闭窗口时隐藏窗口[电子]
【发布时间】:2017-10-30 17:27:26
【问题描述】:

我尝试隐藏我的主窗口,以便以后无需再次加载。 我得到以下代码:

function createWindow () {
  // Create the browser window.
  win = new BrowserWindow({width: 800, height: 600})


  // Emitted when the window is closed.
  win.on('closed', (event) => {
    //win = null
    console.log(event);
    event.preventDefault();
    win.hide();
  })
}

所以这对我不起作用,当我关闭窗口时,我收到以下错误消息:

有人可以帮助我吗?第 37 行是带有 win.hide() 的行

谢谢!

【问题讨论】:

  • 错误告诉大家:win 对象在你试图隐藏时已经被销毁了。
  • 但我从不破坏它,我(试图)阻止关闭 X 按钮的默认操作
  • 我的回答对你有用吗? @wernersbacher

标签: javascript electron


【解决方案1】:

使用close 事件而不是closed 事件。

closed 事件被触发时,窗口已经关闭。

close 事件被触发时,窗口仍然打开,您可以使用event.preventDefault(); 来阻止它关闭,如下所示:

win.on('close', function (evt) {
    evt.preventDefault();
});

但在 MacOS 上,这会阻止您退出应用。要允许退出您的应用并防止窗口关闭,请使用以下代码:

// Set a variable when the app is quitting.
var isAppQuitting = false;
app.on('before-quit', function (evt) {
    isAppQuitting = true;
});

win.on('close', function (evt) {
    if (!isAppQuitting) {
        evt.preventDefault();
    }
});

只有在应用没有退出时才会停止关闭窗口。

【讨论】:

  • 拦截close event 会阻止我关闭应用程序——即使右键单击停靠图标并选择Quit 也是如此。如何区分通过标题栏中的红色按钮关闭窗口的人以及右键单击停靠图标并选择Quit的人?
  • @Jan 好点,我已经编辑了我的答案,看看是否有帮助:)
  • 谢谢@Joshua - 效果很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多