С апреля 2017 года Chrome для Android O поддерживает функцию «Картинка в картинке» . Он позволяет пользователям воспроизводить элемент <video>
в небольшом наложенном окне, которое не блокируется другими окнами, чтобы они могли смотреть, одновременно занимаясь другими делами.
Вот как это работает: откройте Chrome, перейдите на веб-сайт, содержащий видео, и воспроизведите его в полноэкранном режиме. Отсюда нажмите кнопку «Домой», чтобы перейти на главный экран Android, и воспроизводимое видео автоматически перейдет в режим «Картинка в картинке». Вот и все! Довольно круто, правда?
Это так, но как насчет рабочего стола? Что, если веб-сайт хочет контролировать этот процесс?
Хорошей новостью является то, что в данный момент разрабатывается спецификация веб-API «картинка в картинке» . Цель этой спецификации — позволить веб-сайтам инициировать и контролировать такое поведение, предоставляя API следующий набор свойств:
- Уведомляйте веб-сайт, когда видео входит в режим «картинка в картинке» и выходит из него.
- Разрешить веб-сайту запускать функцию «Картинка в картинке» на видеоэлементе с помощью жеста пользователя.
- Разрешите веб-сайту выйти из режима «Картинка в картинке».
- Разрешите веб-сайту проверить, можно ли активировать функцию «Картинка в картинке».
И вот как это может выглядеть:
<video id="video" src="https://example.com/file.mp4"></video>
<button id="pipButton"></button>
<script>
// Hide button if Picture-in-Picture is not supported.
pipButton.hidden = !document.pictureInPictureEnabled;
pipButton.addEventListener('click', function() {
// If there is no element in Picture-in-Picture yet, let's request Picture
// In Picture for the video, otherwise leave it.
if (!document.pictureInPictureElement) {
video.requestPictureInPicture()
.catch(error => {
// Video failed to enter Picture-in-Picture mode.
});
} else {
document.exitPictureInPicture()
.catch(error => {
// Video failed to leave Picture-in-Picture mode.
});
}
});
</script>
Обратная связь
Так что ты думаешь? Пожалуйста, оставляйте свои отзывы и поднимайте вопросы в репозитории «Картинка в картинке» WICG . Мы хотим услышать ваши мысли!
Предотвращение стандартного поведения PIP в Android
Сегодня вы можете запретить видео использовать поведение PiP по умолчанию в Android в Chrome, реагируя на событие изменения размера и обнаруживая, когда размер окна значительно изменился (см. код ниже). Это не рекомендуется в качестве постоянного решения, но это временная опция, пока не будет реализован веб-API.
// See whether resize is small enough to be PiP. It's a hack, but it'll
// work for now.
window.addEventListener('resize', function() {
if (!document.fullscreenElement) {
return;
}
var minimumScreenSize = 0.33;
var screenArea = screen.width * screen.height;
var windowArea = window.outerHeight * window.outerWidth;
// If the size of the window relative to the screen is less than a third,
// let's assume we're in PiP and exit fullscreen to prevent Auto PiP.
if ((windowArea / screenArea) < minimumScreenSize) {
document.exitFullscreen();
}
});