Подтвердить что ты не робот

Atom Electron - Закройте окно с помощью javascript

Я использую Electron (ранее atom-shell) и хотел бы иметь минимальное окно кадра, чтобы три окна OSX (закрыть, максимизировать, минимизировать) были видны с внутри html-страницу.

Я установил опцию Electron frame в false при определении BrowserWindow, чтобы иметь бесхромовое, безрамное окно.

И подумал, что я могу обработать кнопку закрытия с чем-то вроде этого:

<a btn href="#" id="close" onclick="window.top.close(); return false"></a>

Не повезло, к сожалению. Любая идея, как достичь этого?

4b9b3361

Ответ 1

Вы должны получить доступ к объекту BrowserWindow, созданному вашим основным процессом, и вызвать методы минимизации, максимизации и закрытия. Вы можете получить доступ к этому при помощи модуля 'remote'. Вот пример привязки всех трех кнопок.

  const remote = require('electron').remote;

  document.getElementById("min-btn").addEventListener("click", function (e) {
       var window = remote.getCurrentWindow();
       window.minimize(); 
  });

  document.getElementById("max-btn").addEventListener("click", function (e) {
       var window = remote.getCurrentWindow();
       if (!window.isMaximized()) {
           window.maximize();          
       } else {
           window.unmaximize();
       }
  });

  document.getElementById("close-btn").addEventListener("click", function (e) {
       var window = remote.getCurrentWindow();
       window.close();
  }); 

Предполагая, что ваши кнопки min, max, close имеют теги min-btn, max-btn и close-btn, соответственно.

Вы можете просмотреть полную документацию для BrowserWindow вместе с другими функциями, которые могут вам понадобиться здесь: http://electron.atom.io/docs/v0.28.0/api/browser-window/.

Это также может помочь вам взглянуть на учебник, который я написал о создании безхроменного окна, которое выглядит как Visual Studio здесь: http://www.mylifeforthecode.com/making-the-electron-shell-as-pretty-as-the-visual-studio-shell. Ваш вопрос покрывается вместе с некоторыми css, чтобы правильно позиционировать кнопки.