Fullscreen API в JavaScript — повноекранний режим


Введення до об'єкта Fullscreen у JavaScript

Об'єкт Fullscreen у JavaScript – це інструмент, який дозволяє вам програмно керувати режимом повноекранного відображення на веб-сторінці. Цей режим є корисним, коли потрібно надати користувачу можливість максимізувати відображення контенту, зокрема для відео, презентацій, ігор та інших ресурсів.

Використання Fullscreen API

Перевірка підтримки Fullscreen API: Перш ніж взаємодіяти з режимом повноекранного відображення, корисно з'ясувати, чи підтримує поточний браузер Fullscreen API.

if (document.fullscreenEnabled) {
   // Браузер підтримує Fullscreen API
}

Тут ми використовуємо властивість document.fullscreenEnabled$ для перевірки підтримки Fullscreen API`.

Вхід в режим повноекранного відображення: Щоб ввімкнути режим повноекранного відображення для конкретного елемента, використовуйте метод requestFullscreen:

const element = document.getElementById("myVideo");
element.requestFullscreen();

У цьому прикладі ми вибираємо елемент з ідентифікатором "myVideo" і переводимо його в режим повноекранного відображення.

Вихід з режиму повноекранного відображення: Щоб вийти з режиму повноекранного відображення, використовуйте метод document.exitFullscreen:

if (document.fullscreenElement) {
   document.exitFullscreen();
}

Тут ми спершу перевіряємо, чи є в нас активний елемент у режимі повноекранного відображення за допомогою властивості document.fullscreenElement, і якщо так, виходимо з режиму.

автор: Bond

Загальний опис

автор: NagarD

Порада

З міркувань безпеки, браузери зазвичай дозволяють активацію повноекранного режиму лише як відгук на дії користувача, такі як натискання кнопки або клік мишею.

автор: Bond
Порада

Різні браузери можуть мати префіксні версії методів та властивостей для Fullscreen API, такі як webkitRequestFullscreen для WebKit-браузерів. Щоб забезпечити сумісність, рекомендується використовувати поліфіли або перевіряти наявність різних методів.

автор: Bond
Нотатка

Щоб відстежувати зміни стану повноекранного режиму, можна використовувати події, такі як fullscreenchange та fullscreenerror:

document.addEventListener("fullscreenchange", function() {
   if (document.fullscreenElement) {
       console.log("Режим повноекранного відображення ввімкнено");
   } else {
       console.log("Режим повноекранного відображення вимкнено");
   }
});

У цьому прикладі ми відслідковуємо, коли користувач входить або виходить з режиму повноекранного відображення, і виводимо відповідне повідомлення.

автор: Bond

Синтаксис

element.requestFullscreen([options]);
document.exitFullscreen();

методи

Метод Опис
exitFullscreen Завершує режим повноекранного відображення у браузері, повертаючи сторінку до звичайного вигляду.

властивості

Властивість Опис
fullscreenElement Визначає, який елемент знаходиться у повноекранному режимі, або повертає null, якщо жоден.
fullscreenEnabled Перевіряє, чи підтримує браузер режим повного екрану для користувача.

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE
71 64 16.4 58 79
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
71 71 64 12
Підтримка: серверні переглядачі
Переглядач Node.js Deno
0.10.0 1.0

Приклади

+ запропонувати свій приклад у пісочниці

У цьому прикладі кнопка "enterFullscreen" викликає метод requestFullscreen для контейнера слайдів, забезпечуючи повноекранний перегляд презентації.

HTML

<div id="slideContainer">Демонстраційний елемент</div>
<div id="enterFullscreen">Демонстраційний елемент</div>

JS

const slideContainer = document.getElementById("slideContainer");
const enterFullscreenButton = document.getElementById("enterFullscreen");

enterFullscreenButton.addEventListener("click", function() {
    slideContainer.requestFullscreen();
});
автор: Bond

У цьому прикладі ми створюємо кнопку для входу та виходу з повноекранного режиму. Якщо користувач натисне на кнопку і гра вже є в повноекранному режимі, ми виходимо з нього; в іншому випадку, переводимо ігровий канвас в повноекранний режим.

HTML

<canvas id="gameCanvas" width="300" height="150"></canvas>
<div id="toggleFullscreen">Демонстраційний елемент</div>

JS

const gameCanvas = document.getElementById("gameCanvas");
const fullscreenToggle = document.getElementById("toggleFullscreen");

fullscreenToggle.addEventListener("click", function() {
    if (document.fullscreenElement) {
        document.exitFullscreen();
    } else {
        gameCanvas.requestFullscreen();
    }
});
автор: Bond

Кнопка входу в повний екран із перевіркою дозволу й обробкою відмови. У рамці прикладу дозволу немає, тому fullscreenEnabled дорівнює false, а проміс відхиляється — це і є типова відповідь браузера, коли умови не виконано.

const btn = document.createElement('button');
btn.textContent = 'На весь екран';
const info = document.createElement('p');
document.body.append(btn, info);

// чи дозволено повний екран узагалі: у рамці без allow="fullscreen" — ні
info.textContent = 'document.fullscreenEnabled: ' + document.fullscreenEnabled;
console.log('fullscreenEnabled:', document.fullscreenEnabled);

btn.addEventListener('click', () => {
    // виклик мусить іти з обробника дії користувача, інакше проміс відхиляється
    document.documentElement.requestFullscreen()
        .then(() => {
            info.textContent = 'зайшли: ' + document.fullscreenElement.tagName;
            console.log('fullscreenElement:', document.fullscreenElement.tagName);
        })
        .catch((e) => {
            // без цього catch була б лише невиразна помилка в консолі
            info.textContent = 'відмова: ' + e.name;
            console.log('відмова:', e.name, '—', e.message);
        });
});

// вихід через Esc не дає ні події клавіші, ні промісу — лише fullscreenchange
document.addEventListener('fullscreenchange', () => {
    console.log('змінився стан, зараз у повному екрані:', document.fullscreenElement !== null);
});
автор: NagarD

HTML

<video id="videoPlayer" width="320" height="180" controls poster="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='320' height='180' viewBox='0 0 64 36' preserveAspectRatio='none'%3E%3Crect width='64' height='36' fill='%23264653'/%3E%3Ccircle cx='32' cy='18' r='10' fill='%23e9c46a'/%3E%3Cpath d='M29 12 38 18 29 24Z' fill='%23264653'/%3E%3C/svg%3E">
    Ваш браузер не відтворює відео.
</video>
<button id="fullscreenButton">На весь екран</button>

JS

const videoElement = document.getElementById("videoPlayer");
const fullscreenButton = document.getElementById("fullscreenButton");

fullscreenButton.addEventListener("click", function() {
    if (document.fullscreenElement) {
        document.exitFullscreen();
    } else {
        videoElement.requestFullscreen();
    }
});
автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле веде сходинками (розділ → тип → сторінка), а хибний ключ підкреслить хвилею.
[[!sandbox/S0oh1hBm]] Живий приклад окремим рядком — саме вікно результату. Той самий ключ зі знаком !: наберіть [[! і дійдіть сходинками до потрібної сторінки, список покаже її приклади.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Правка
Зворотний зв'язок
Вхід