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>.
Спецификации
Совместимость браузеров
| Рабочий стол | Мобильное | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 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.disablePictureInPictureDocument.pictureInPictureEnabledDocument.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