Управление окном приложения

Создать окно позволяет класс BrowserWindow из пакета electron. Формат конструктора:

<Объект окна> = new BrowserWindow(<Объект с опциями>)

Обратите внимание: окно можно создать только в процессе Main.

Создание и отображение окна

В параметре <Объект с опциями> можно указать следующие опции:

  • title — заголовок окна по умолчанию. Если в HTML-документе имеется тег <title>, то будет использоваться его значение. Если тег и опция не заданы, то берется значение свойства name из файла package.json. После создания окна можно воспользоваться методами setTitle(<Заголовок>) и getTitle();
  • show — если опция имеет значение true (значение по умолчанию), то после создания окно будет отображено на экране;
  • type — задает тип окна;
  • alwaysOnTop — если опция имеет значение true, то окно будет всегда отображаться поверх других окон (значение по умолчанию: false);
  • skipTaskbar — если опция имеет значение true, то значок окна не будет отображаться на Панели задач (значение по умолчанию: false);
  • focusable — если опция имеет значение false, то окно не сможет получать фокус ввода (значение по умолчанию: true);
  • autoHideMenuBar — если опция имеет значение true, то строка меню будет по умолчанию скрываться и отображаться только при нажатии клавиши <Alt> (значение по умолчанию: false).

Управлять отображением и сокрытием окна позволяют следующие методы:

  • show() — отображает окно и устанавливает на него фокус ввода;
  • showInactive() — отображает окно, но не устанавливает на него фокус ввода;
  • hide() — скрывает окно;
  • focus() — устанавливает на окно фокус ввода;
  • blur() — убирает с окна фокус ввода;
  • isFocused() — возвращает true, если окно находится в фокусе ввода, и false — в противном случае;
  • isVisible() — возвращает true, если пользователь видит окно, и false — в противном случае;
  • isAlwaysOnTop() — возвращает true, если окно всегда отображается поверх других окон, и false — в противном случае;
  • moveTop() — отображает окно поверх других окон.

Загрузить Web-страницу в окно позволяют следующие методы:

  • loadFile(<Путь>[, <Объект с опциями>]) — загружает локальный файл. Возвращает объект Promise, который успешно разрешается при удачной загрузке. Пример:
win.loadFile('index.html').then(() => {
   console.log('loadFile OK');
}).catch((e) => {
   console.log(e);
});
  • loadURL(<URL>[, <Объект с опциями>]) — загружает HTML-документ по указанному URL. Во втором параметре указывается объект с опциями userAgent, httpReferrer, extraHeaders, postData и baseURLForDataURL. Возвращает объект Promise, который успешно разрешается при удачной загрузке. Пример загрузки локального файла:
let url = require('url').format({
   protocol: 'file',
   slashes: true,
   pathname: require('path').join(__dirname, 'index.html')
});
win.loadURL(url).then(() => {
   console.log('loadURL OK');
}).catch((e) => {
   console.log(e);
});

Перечислим основные события:

  • show — отображение окна;
  • hide — сокрытие окна;
  • ready-to-show — Web-страница загружена и может быть показана без мерцания;
  • page-title-updated — генерируется при смене заголовка окна. Если вызвать метод preventDefault() через объект события, то заголовок изменен не будет:
win.on('page-title-updated', (e, title, exp) => {
   e.preventDefault();
});
  • focus — окно получило фокус ввода;
  • blur — окно потеряло фокус ввода.

Отобразим окно внутри обработчика события ready-to-show:

let win = new BrowserWindow({
   title: 'Заголовок окна',
   show: false
});
win.on('ready-to-show', () => {
   win.show();
});
win.loadFile('index.html');

Получить ссылки на окна позволяют следующие статические методы из класса BrowserWindow:

  • getAllWindows() — возвращает массив со всеми открытыми окнами. Пример:
app.on('activate', () => { // Для MacOS
   if (BrowserWindow.getAllWindows().length === 0) {
      createWindow();
   }
});
  • getFocusedWindow() — возвращает ссылку на окно, находящееся в фокусе ввода или значение null;

fromWebContents(<webContents>) — возвращает ссылку на окно, соответствующее объекту webContents, или значение null:

console.log(BrowserWindow.fromWebContents(win.webContents));

fromId(<id>) — возвращает ссылку на окно, соответствующее идентификатору <id>, или значение null:

console.log(BrowserWindow.fromId(win.id));

Учебник по Electron js
Учебник по Electron js в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов