Функциональность масштабирования в ElectronJS
ElectronJS - это платформа с открытым исходным кодом, используемая для создания кроссплатформенных нативных настольных приложений с использованием веб-технологий, таких как HTML, CSS и JavaScript, которые могут работать в операционных системах Windows, macOS и Linux. Он объединяет движок Chromium и NodeJS в единую среду выполнения.
Все традиционные веб-браузеры имеют встроенную функцию масштабирования. Пользователь может просто увеличивать / уменьшать масштаб для увеличения / уменьшения размера содержимого веб-страницы соответственно, прокручивая колесо мыши. По умолчанию Electron не включает функцию масштабирования для своих экземпляров BrowserWindow. Однако, Electron действительно обеспечивает способ , с помощью которого мы можем добавить функциональность Увеличить к содержимому страницы с помощью методов экземпляра, события и свойства встроенного объекта BrowserWindow и свойства webContents. Свойство webContents предоставляет нам определенные события и методы Instance, с помощью которых мы можем установить масштаб веб-страницы по умолчанию, максимальное и минимальное масштабирование веб-страницы и увеличивать / масштабировать содержимое веб-страницы с помощью прокрутки мыши. В этом руководстве будет продемонстрирована функция масштабирования в Electron.
Мы предполагаем, что вы знакомы с предварительными условиями, описанными в вышеупомянутой ссылке. Для работы Electron в системе должны быть предварительно установлены node и npm.
- Структура проекта:

Пример: следуйте инструкциям в разделе Печать в ElectronJS, чтобы настроить базовое приложение Electron. Скопируйте код Boilerplate для файлов main.js и index.html, как указано в статье. Также внесите необходимые изменения, упомянутые в файле package.json, чтобы запустить приложение Electron. Мы продолжим создавать наше приложение, используя ту же кодовую базу. Основные шаги, необходимые для настройки приложения Electron, остаются прежними.
package.json:
{
"name": "электрон-зум",
"версия": "1.0.0",
"description": "Увеличить электрон",
"main": "main.js",
"scripts": {
"старт": "электрон".
},
"ключевые слова": [
"электрон"
],
«автор»: «Радхеш Ханна»,
"лицензия": "ISC",
"dependencies": {
"электрон": "^ 8.3.0"
}
}
Вывод: На этом этапе настроено наше основное электронное приложение. После запуска приложения мы должны увидеть следующий результат:
Увеличение функциональность в Electron: BrowserWindow Instance и webContents собственность является частью основного процесса. Чтобы импортировать и использовать BrowserWindow в процессе рендеринга, мы будем использовать удаленный модуль Electron.
- index.html : добавьте в этот файл следующий фрагмент.
html
< h3 >Zoom in Electron</ h3 >< div >Ctrl+Scroll for Triggering Zoom Functionality</ div > |
- index.js : добавьте в этот файл следующий фрагмент.
javascript
const electron = require( "electron" ); // Import BrowserWindow using Electron remoteconst BrowserWindow = electron.remote.BrowserWindow;let win = BrowserWindow.getFocusedWindow(); // let win = BrowserWindow.getAllWindows()[0]; // If reduced below Minimum value// Error - 'zoomFactor' must be a double greater than 0.0win.webContents.setZoomFactor(1.0); // Upper Limit is working of 500 %win.webContents .setVisualZoomLevelLimits(1, 5) .then(console.log( "Zoom Levels Have been Set between 100% and 500%" )) . catch ((err) => console.log(err)); win.webContents.on( "zoom-changed" , (event, zoomDirection) => { console.log(zoomDirection); var currentZoom = win.webContents.getZoomFactor(); console.log( "Current Zoom Factor - " , currentZoom); // console.log('Current Zoom Level at - ' // , win.webContents.getZoomLevel()); console.log( "Current Zoom Level at - " , win.webContents.zoomLevel); if (zoomDirection === "in" ) { // win.webContents.setZoomFactor(currentZoom + 0.20); win.webContents.zoomFactor = currentZoom + 0.2; console.log( "Zoom Factor Increased to - " , win.webContents.zoomFactor * 100, "%" ); } if (zoomDirection === "out" ) { // win.webContents.setZoomFactor(currentZoom - 0.20); win.webContents.zoomFactor = currentZoom - 0.2; console.log( "Zoom Factor Decreased to - " , win.webContents.zoomFactor * 100, "%" ); }}); |
Подробное объяснение всех событий, методов и свойств экземпляра, используемых в коде, приведено ниже:
- zoom-changed: Event Это событие экземпляра свойства webContents генерируется, когда пользователь запрашивает изменение уровня масштабирования веб-страницы с помощью прокрутки колесика мыши. В Windows это запускается комбинацией клавиш Ctrl + Scroll . По умолчанию в Electron не включено масштабирование, и это событие необходимо явно добавить, чтобы знать, было ли инициировано изменение уровня масштабирования или нет. Это событие возвращает следующие параметры.
- event: глобальный объект Event.
- zoomDirection: String Этот параметр указывает, была ли начата прокрутка колесика мыши вверх, обозначающая увеличение, или была начата прокрутка вниз, обозначающая уменьшение. Этот параметр может содержать только два значения , то есть в или соответственно.
- webContents.setZoomFactor (factor) Этот метод экземпляра свойства webContents изменяет коэффициент масштабирования веб-страницы на указанный коэффициент. Этот метод экземпляра определяет, на какой коэффициент веб-страница должна быть увеличена или уменьшена. Коэффициент масштабирования равен проценту масштабирования, деленному на 100 . Следовательно, если процент масштабирования равен 100%, то коэффициент масштабирования - 1,0 . Он принимает следующие параметры. В приведенном выше коде мы увеличиваем / уменьшаем коэффициент масштабирования для каждого события экземпляра с измененным масштабированием, генерируемого на 0,2, что означает 20% -ное увеличение или уменьшение масштаба.
- factor: Double Двойной коэффициент увеличения. По умолчанию установлено значение 1.0 . Значение коэффициента всегда должно быть больше 0,0 . В случае, если во время операций масштабирования это значение опускается ниже 0,0 , возникает ошибка, которая отображается в консоли, и никакие дальнейшие изменения масштабирования веб-страницы не вносятся.
- webContents.getZoomFactor () Этот метод экземпляра свойства webContents возвращает целочисленное значение, указывающее текущий коэффициент масштабирования веб-страницы. Возвращаемое значение всегда будет больше 0,0 .
Примечание. Несмотря на то, что это не указано в официальной документации Electron, начиная с версии Electron 8.3.0 , этот метод считается устаревшим . В случае использования этого метода он отобразит предупреждающее сообщение в консоли, даже если он все еще работает. Вместо этого мы должны использовать свойство экземпляра webContents.zoomFactor для получения и управления коэффициентом масштабирования веб-страницы. То же самое было продемонстрировано в коде и объяснено ниже. - webContents.setZoomLevel (level) Этот метод экземпляра свойства webContents изменяет уровень масштабирования веб-страницы на указанный уровень. Этот метод экземпляра определяет, на каком уровне веб-страница должна быть увеличена или уменьшена. Согласно официальной документации Electron, исходный размер равен 0, и каждое увеличение выше или ниже представляет собой увеличение или уменьшение на 20% до пределов по умолчанию в 300% и 50% от исходного размера соответственно. Формула для этого - масштаб: = 1,2 ^ уровень .
Примечание. Этот метод экземпляра и метод экземпляра webContents.setZoomFactor () выполняют одинаковые манипуляции с масштабированием содержимого веб-страницы в Electron. Эти методы экземпляра просто принимают разные значения в зависимости от предоставленного фактора и уровня соответственно. Также проще управлять и контролировать метод webContents.setZoomFactor (). В приведенном выше коде мы отображали коэффициент масштабирования и уровень масштабирования каждый раз, когда генерируется событие экземпляра. Также уровень масштабирования веб-страницы может иметь отрицательное значение.
Примечание. Несмотря на то, что это не указано в официальной документации Electron, начиная с версии Electron 8.3.0 , этот метод считается устаревшим . В случае использования этого метода он отобразит предупреждающее сообщение в консоли, даже если он все еще работает. Вместо этого мы должны использовать свойство экземпляра webContents.zoomLevel для получения и управления уровнем масштабирования веб-страницы. - webContents.getZoomLevel () Этот метод экземпляра свойства webContents возвращает целочисленное значение, указывающее текущий уровень масштабирования веб-страницы. Возвращаемое значение также может быть отрицательным.
Примечание. Несмотря на то, что это не указано в официальной документации Electron, начиная с версии Electron 8.3.0 , этот метод считается устаревшим . В случае использования этого метода он отобразит предупреждающее сообщение в консоли, даже если он все еще работает. Вместо этого мы должны использовать свойство экземпляра webContents.zoomLevel для получения и управления уровнем масштабирования веб-страницы. - win.webContents.setVisualZoomLevelLimits (минимум, максимум) Этот метод экземпляра свойства webContents устанавливает минимальный и максимальный предел уровня масштабирования. Как обсуждалось выше, функция масштабирования по умолчанию отключена в Electron. Для его включения используется этот метод экземпляра. Он возвращает Promise, и он разрешается, когда минимальный и максимальный масштаб для веб-страницы были успешно установлены. Он принимает следующие параметры.
- минимум: целое число Устанавливает минимальный разрешенный масштаб для веб-страницы. Это значение представляет собой процент масштабирования, деленный на 100 . Следовательно, Zoom Percent - 100% переводится в 1, который установлен в этом параметре.
- Максимум: целое число. Устанавливает максимально допустимый масштаб для веб-страницы. Это значение представляет собой процент масштабирования, деленный на 100 . Следовательно, Zoom Percent - 500% переводится в 5, что установлено в этом параметре.
- webContents.zoomFactor Это свойство Instance свойства webContents изменяет коэффициент масштабирования веб-страницы на указанный коэффициент. Это свойство экземпляра определяет, с каким коэффициентом веб-страница должна быть увеличена или уменьшена. Коэффициент масштабирования равен проценту масштабирования, деленному на 100 . В приведенном выше коде мы увеличиваем / уменьшаем коэффициент масштабирования для каждого события экземпляра с измененным масштабированием, генерируемого на 0,2, что означает 20% -ное увеличение или уменьшение масштаба.
- webContents.zoomLevel Это свойство Instance свойства webContents изменяет уровень масштабирования веб-страницы на указанный уровень. Это свойство экземпляра определяет, на каком уровне веб-страница должна быть увеличена или уменьшена. Согласно официальной документации Electron, исходный размер равен 0, и каждое увеличение выше или ниже представляет собой увеличение или уменьшение на 20% до пределов по умолчанию в 300% и 50% от исходного размера соответственно. Формула для этого - масштаб: = 1,2 ^ уровень .
Чтобы получить текущий экземпляр BrowserWindow в процессе рендеринга, мы можем использовать некоторые статические методы, предоставляемые объектом BrowserWindow.
- BrowserWindow.getAllWindows (): этот метод возвращает массив активных / открытых экземпляров BrowserWindow. В этом приложении у нас есть только один активный экземпляр BrowserWindow, и на него можно напрямую ссылаться из массива, как показано в коде.
- BrowserWindow.getFocusedWindow (): этот метод возвращает экземпляр BrowserWindow, который сфокусирован в приложении. Если текущий экземпляр BrowserWindow не найден, возвращается значение null . В этом приложении у нас есть только один активный экземпляр BrowserWindow, и на него можно напрямую ссылаться с помощью этого метода, как показано в коде.
На этом этапе мы должны успешно иметь возможность увеличивать и уменьшать масштаб содержимого BrowserWindow в Electron.
Выход: