Я запускаю два видео друг над другом, как на этой картинке:
Там есть кнопка «Войти в полноэкранный режим». Когда кто-то нажимает на эту кнопку, я хочу сделать две вещи.
- Видеопроигрыватель 2 будет установлен в режим «картинка в картинке».
- Видеоплеер 1 будет настроен на полноэкранный режим.
Я могу работать как в полноэкранном режиме, так и в режиме «картинка в картинке», но не могу одновременно использовать полноэкранный режим и функцию «картинка в картинке». Ошибка вылетает так:
Не удалось выполнить 'requestFullscreen' для 'Element': API может быть инициировано только жестом пользователя.
Uncaught (в обещании) TypeError: полноэкранная ошибка
Я использую jQuery, и вот мой пример кода:
$('.enter-full-screen').click(event => {
event.stopImmediatePropagation();
event.stopPropagation();
let pipResponse = $('#video-player-2')[0].requestPictueInPicture();
pipResponse.then(() => {
$('#video-player-1')[0].requestFullscreen() // Note: I am using a browser prefixes
.then(/* ... */)
.catch(/* ... */);
})
});
Обновление: 07.01.2020: Я пробовал оба запроса одновременно, но тоже не работает. Он работает только для одного, который я запрашиваю первым.
let pipResponse = $('#video-player-2')[0].requestPictueInPicture();
let fullscreenResponse = $('#video-player-1')[0].requestFullscreen();
Promise.all([pipResponse, fullscreenResponse])
.then(/* code */)
.catch(/* code */);
В этом случае работает только pip, а полноэкранный запрос выдает ошибку. Если я сначала запрашиваю полноэкранный режим, то работает только полноэкранный режим - pip выдает ошибку.
Я попытался использовать jQuery
trigger('click')
для автоматического запуска другого события клика вместе с одним. Работает только для одного (пип или полноэкранный режим), НО НЕ РАБОТАЕТ ВМЕСТЕ!
Я действительно ценю твою помощь.
.requestFullscreen()
вызывается в обещании, поэтому я предполагаю, что браузер не отслеживает, был ли этот код изначально активирован гостевой учетной записью пользователя. Разве вы не можете одновременно запросить полноэкранный режим и картинку в картинке и отменить одно, если другое не работает? - person Axel Köhler   schedule 06.01.2020