Spec-Zone.ru › Web APIs

API «Картинка в картинке»

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

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

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

API «Картинка в картинке» позволяет веб-сайтам создавать плавающее окно видео, которое всегда находится поверх других окон. Это позволяет пользователям продолжать просмотр медиа, взаимодействуя с другими сайтами или приложениями на устройстве.

Примечание: API «Документ Картинка в картинке» расширяет API «Картинка в картинке», позволяя заполнять окно всегда поверх других окон любым произвольным содержимым HTML, а не только видео.

Интерфейсы

PictureInPictureWindow

Представляет плавающее окно видео; содержит свойства width и height, а также обработчик события onresize.

PictureInPictureEvent

Представляет события, связанные с режимом «картинка в картинке», включая enterpictureinpicture, leavepictureinpicture и resize.

Методы экземпляров

API «Картинка в картинке» добавляет методы к интерфейсам HTMLVideoElement и Document для переключения плавающего окна видео.

Методы экземпляров для интерфейса HTMLVideoElement

HTMLVideoElement.requestPictureInPicture()

Запрашивает, чтобы пользовательский агент перевел видео в режим «картинка в картинке»

Методы экземпляров для интерфейса Document

Document.exitPictureInPicture()

Запрашивает, чтобы пользовательский агент вернул элемент в режим «картинка в картинке» в исходное положение.

Свойства экземпляров

API «Картинка в картинке» дополняет интерфейсы HTMLVideoElement, Document и ShadowRoot свойствами, которые можно использовать для определения поддержки и доступности режима плавающего окна видео, активен ли в настоящее время режим «картинка в картинке» и какое видео плавает.

Свойства экземпляров для интерфейса HTMLVideoElement

HTMLVideoElement.disablePictureInPicture

Свойство disablePictureInPicture даст пользователю указание не предлагать режим «картинка в картинке» или не запрашивать его автоматически.

Свойства экземпляров для интерфейса Document

Document.pictureInPictureEnabled

Свойство pictureInPictureEnabled указывает, можно ли использовать режим «картинка в картинке». Это false если режим «картинка в картинке» недоступен по какой-либо причине (например, функция "picture-in-picture" запрещена или режим «картинка в картинке» не поддерживается).

Свойства экземпляров для интерфейсов Document или ShadowRoot

Document.pictureInPictureElement / ShadowRoot.pictureInPictureElement

Свойство pictureInPictureElement показывает, какой Element в данный момент отображается в плавающем окне (или в тени DOM). Если это null, в документе (или тени DOM) нет узла, который в настоящее время находится в режиме «картинка в картинке».

События

API «Картинка в картинке» определяет три события, которые могут использоваться для обнаружения переключения режима «картинка в картинке» и изменения размера плавающего окна видео.

enterpictureinpicture

Отправляется элементу HTMLVideoElement, когда он переходит в режим «картинка в картинке».

leavepictureinpicture

Отправляется элементу HTMLVideoElement, когда он выходит из режима «картинка в картинке».

resize

Отправляется элементу PictureInPictureWindow, когда он изменяет размер.

Добавление элементов управления

Если обработчики действий с медиа были настроены с помощью API «Сессия медиа», соответствующие элементы управления этими действиями будут добавлены браузером в наложение «картинка в картинке». Например, если установлено действие "nexttrack", в представлении «картинка в картинке» может отображаться кнопка пропуска. Поддержка добавления пользовательских кнопок или элементов управления HTML отсутствует.

Управление стилями

Псевдокласс :picture-in-picture CSS псевдокласса соответствует элементу видео, который в данный момент находится в режиме «картинка в картинке», что позволяет настраивать таблицы стилей для автоматической корректировки размера, стиля или макета содержимого, когда видео переключается между режимами «картинка в картинке» и традиционным представлением.

Управление доступом

Доступность режима «картинка в картинке» можно контролировать с помощью Политики разрешений. Функция режима «картинка в картинке» идентифицируется строкой "picture-in-picture", а значение по умолчанию для списка разрешенных значений – *, что означает, что режим «картинка в картинке» разрешен в контекстах документов верхнего уровня, а также для вложенных контекстов просмотра, загружаемых из того же источника, что и основной документ.

Примеры

В данном примере видео представлено на веб-странице. Нажав кнопку ниже, пользователь может переключить плавающее окно видео.

Переключение режима «картинка в картинке»

Этот код вызывается обработчиком щелчка, когда пользователь нажимает кнопку «Переключить режим "картинка в картинке"»:

function togglePictureInPicture() {
  if (document.pictureInPictureElement) {
    document.exitPictureInPicture();
  } else if (document.pictureInPictureEnabled) {
    video.requestPictureInPicture();
  }
}

Этот блок начинает с проверки значения атрибута document pictureInPictureElement.

Если значение не null, это элемент, который сейчас находится в режиме «картинка в картинке», то есть в плавающем окне. Мы вызываем document.exitPictureInPicture(), чтобы вернуть видео в исходное положение.

Если значение null, значит, ни одно видео не находится в плавающем окне. Поэтому мы можем запросить, чтобы видео вошло в режим «картинка в картинке». Для этого мы вызываем HTMLVideoElement.requestPictureInPicture() для элемента <video>.

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

Спецификация
Картинка в картинке
# interface-picture-in-picture-window

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

Рабочий стол Мобильное
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
Picture-in-Picture_API 69 79 Нет 56 13.1 105 Нет 72 13.4 20.0 Нет
height 69 79 Нет 56 13.1 105 Нет 72 13.4 20.0 Нет
resize_event 69 79 Нет 56 13.1 105 Нет 72 13.4 20.0 Нет
width 69 79 Нет 56 13.1 105 Нет 72 13.4 20.0 Нет

См. также

  • HTMLVideoElement.requestPictureInPicture()
  • HTMLVideoElement.disablePictureInPicture
  • Document.pictureInPictureEnabled
  • Document.exitPictureInPicture()
  • Document.pictureInPictureElement
  • :picture-in-picture
  • API «Изображение внутри изображения» для документа

© 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/Picture-in-Picture_API

Spec-Zone.ru

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