Spec-Zone.ru › Web APIs

Элемент: метод requestFullscreen()

Ограниченная доступность

Эта функция не относится к Baseline, так как она не работает во всех наиболее распространённых браузерах.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Метод Element.requestFullscreen() асинхронно запрашивает переход к полноэкранному режиму для элемента.

Гарантии, что элемент перейдет в полноэкранный режим, нет. Если разрешение на переход в полноэкранный режим предоставлено, возвращённое Promise будет выполнено, и элемент получит событие fullscreenchange, уведомляющее о переходе в полноэкранный режим. Если разрешение отказано, обещание отклонится, и элемент вместо этого получит событие fullscreenerror. Если элемент был отсоединён от исходного документа, эти события будут получены документом.

Синтаксис

requestFullscreen()
requestFullscreen(options)

Параметры

options Необязательно

Объект, управляющий поведением перехода в полноэкранный режим. Доступные параметры:

navigationUI Необязательно

Определяет, будет ли отображаться навигационное меню в полноэкранном режиме. Значение по умолчанию — "auto", означающее, что браузер решит, как поступить.

"hide"

Навигационное меню браузера будет скрыто, а весь экран будет отведен под отображение элемента.

"show"

Браузер отобразит элементы управления навигацией по странице и, возможно, другие элементы пользовательского интерфейса; размеры элемента (и воспринимаемые размеры экрана) будут ограничены с учетом наличия этого интерфейса.

"auto"

Браузер выберет, какое из вышеперечисленных настроек применять. Это значение по умолчанию.

screen Необязательно Экспериментальное

Указывает, на каком экране вы хотите отобразить элемент в полноэкранном режиме. В качестве значения принимается объект ScreenDetailed, представляющий выбранный экран.

Возвращаемое значение

А Promise, которое выполняется со значением undefined при завершении перехода в полноэкранный режим.

Исключения

Вместо традиционного возбуждения исключения, процедура requestFullscreen() объявляет ошибки, отклоняя Promise . Обработчик отклонения получает одно из следующих значений исключения:

TypeError

Исключение TypeError может быть вызвано в следующих ситуациях:

  • Документ, содержащий элемент, не полностью активен; то есть, это не текущий активный документ.
  • Элемент не содержится в документе.
  • Элементу запрещено использовать функцию fullscreen из-за настроек Политики разрешений или других механизмов контроля доступа.
  • Элемент и его документ — это один и тот же узел.
  • Элемент — это поповер, который уже отображается через HTMLElement.showPopover().

Безопасность

Временная активация пользователя требуется. Пользователь должен взаимодействовать со страницей или элементом пользовательского интерфейса для работы этой функции.

Примечания по использованию

Совместимые элементы

Элемент, который вы хотите перевести в полноэкранный режим, должен соответствовать нескольким требованиям:

  • Он должен быть одним из стандартных HTML-элементов или <svg> или <math>.
  • Он не должен быть элементом <dialog>.
  • Он должен находиться либо в главном документе, либо во <iframe>, которому задан атрибут allowfullscreen.

Кроме того, все установленные политики разрешений должны допускать использование этой функции.

Обнаружение активации полноэкранного режима

Вы можете определить, был ли успешным ваш запрос на переход в полноэкранный режим, используя возвращённое Promise от requestFullscreen(), как показано в примерах ниже.

Чтобы узнать, когда другой код переключает полноэкранный режим, следует установить обработчики события fullscreenchange на элементе Document. Также важно отслеживать событие fullscreenchange, чтобы, например, отслеживать, когда пользователь вручную включает или выключает полноэкранный режим или когда пользователь переключается между приложениями, что может привести к временной потере полноэкранного режима вашего приложения.

Примеры

Запрос полноэкранного режима

Эта функция переключает первый элемент <video>, найденный в документе, в полноэкранный режим и обратно.

function toggleFullscreen() {
  let elem = document.querySelector("video");

  if (!document.fullscreenElement) {
    elem.requestFullscreen().catch((err) => {
      alert(
        `Error attempting to enable fullscreen mode: ${err.message} (${err.name})`,
      );
    });
  } else {
    document.exitFullscreen();
  }
}

Если документ ещё не находится в полноэкранном режиме (это определяется наличием значения у document.fullscreenElement), мы вызываем метод requestFullscreen() видео. Если запрос был успешен, ничего не требуется; в противном случае, обработчик отклонения обещания выводит сообщение об ошибке.

Если же полноэкранный режим уже активен, мы вызываем document.exitFullscreen() для его отмены.

Вы можете посмотреть этот пример в действии или просмотреть или изменить код на Glitch.

Использование navigationUI

В этом примере весь документ переводится в полноэкранный режим путем вызова requestFullscreen() на элементе Document.documentElement, корневом элементе <html> документа.

let elem = document.documentElement;

elem
  .requestFullscreen({ navigationUI: "show" })
  .then(() => {})
  .catch((err) => {
    alert(
      `An error occurred while trying to switch into fullscreen mode: ${err.message} (${err.name})`,
    );
  });

Обработчик выполнения обещания ничего не делает, но если обещание отклонено, отображается сообщение об ошибке с помощью alert().

Использование параметра screen

Если вам необходимо сделать элемент полноэкранным на первичном экране ОС, вы можете использовать следующий код:

try {
  const primaryScreen = (await getScreenDetails()).screens.find(
    (screen) => screen.isPrimary,
  );
  await document.body.requestFullscreen({ screen: primaryScreen });
} catch (err) {
  console.error(err.name, err.message);
}

Метод Window.getScreenDetails() используется для получения объекта ScreenDetails для текущего устройства, содержащего объекты ScreenDetailed, представляющие разные доступные экраны.

Спецификации

Спецификация
Fullscreen API
# ref-for-dom-element-requestfullscreen①

Совместимость браузеров

Рабочий стол Мобильный
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
requestFullscreen 7115 791212–14 64
9До Firefox 44, Firefox неправильно разрешал элементам внутри элемента <frame> или <object> запрашивать и получать полноэкранный режим. В Firefox 44 и далее это исправлено: только элементы в документе верхнего уровня или в элементе <iframe> с атрибутом allowfullscreen могут быть отображены в полноэкранном режиме.
581512.1–15 16.45.1 7118 64
9До Firefox для Android 44, Firefox для Android неправильно разрешал элементам внутри элемента <frame> или <object> запрашивать и получать полноэкранный режим. В Firefox для Android 44 и далее это исправлено: только элементы в документе верхнего уровня или в элементе <iframe> с атрибутом allowfullscreen могут быть отображены в полноэкранном режиме.
501412.1–14
16.4["Доступно только на iPad, а не на iPhone.", "Показывается кнопка наложения, которую нельзя отключить. Проводя пальцем вниз, вы выходите из полноэкранного режима, что делает его непригодным для некоторых случаев использования, таких как игры."]
12Доступно только на iPad, а не на iPhone. Показывается кнопка наложения, которую нельзя отключить.
10.01.0 71≤37
options_navigationUI_parameter 71 79 Нет 58 16.4 71 Нет 50 Нет 10.0 71
options_screen_parameter 100 100 Нет 86 Нет Нет Нет Нет Нет Нет Нет
returns_promise 71 79 64 58 16.4 71 64 50 16.4 10.0 71

См. также

  • Fullscreen API
  • Document.exitFullscreen()
  • Document.fullscreen
  • Document.fullscreenElement
  • :fullscreen
  • allowfullscreen

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullscreen

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API