Как сделать видео полноэкранным, когда оно помещено внутри iframe?
Я использую настройки по умолчанию для моего mediaelement.JS player, и моя инициализация очень проста:
$('video').mediaelementplayer();
мой вопрос: Можно ли полноэкранный режим проигрывателя, когда видео встроено в iframe? Когда я нажимаю полноэкранный режим, видео максимизируется до iframe, но не до всего экрана. Это ограничение html или есть способ обойти его?
общая структура выглядит это:
<!DOCTYPE html>
<html>
<head />
<body>
<iframe>
<!DOCTYPE html>
<html>
<head />
<body>
*My Video Here <video> ...*
<body>
</html>
</iframe>
</body>
</html>
спасибо!
изменить:
Похоже, это специфический игрок. По умолчанию в HTML5 <video>
реализация максимизирует полноэкранный режим просто отлично, даже внутри iframe.
4 ответов
наткнулся на это на видео.js:
видео.js внутри модального окна: полный экран не работает
и ответ заключается в добавлении этих атрибутов в iframe:
<iframe … allowfullscreen="true" webkitallowfullscreen="true" mozallowfullscreen="true">
(нет поддержки IE, хотя)
Я использую этот бит кода, чтобы отслеживать, вошло ли видео в / из полноэкранного режима:
MediaElementPlayer.prototype.enterFullScreen_org = MediaElementPlayer.prototype.enterFullScreen;
MediaElementPlayer.prototype.enterFullScreen = function() {
// Your code here
this.enterFullScreen_org();
}
MediaElementPlayer.prototype.exitFullScreen_org = MediaElementPlayer.prototype.exitFullScreen;
MediaElementPlayer.prototype.exitFullScreen = function() {
// Your code here
this.exitFullScreen_org();
}
Я предполагаю, что вы можете вызвать эту функцию на родительской странице, чтобы увеличить iframe?
вот" взломать " решение, которое даже сделает вашу страницу загружаться быстрее.
1) создайте изображение (обычно скриншот видео) вместо iFrame.
2) свяжите обработчик событий click с изображением, чтобы он создал iFrame для требуемых размеров. (Вы можете основывать эти измерения на размере окна клиента).
мой клиент уже удовлетворился ограниченной шириной "полноэкранного" видео – это были только черные полосы выше и ниже, от которых я должен был избавиться. (в моем случае размеры iFrame были 945×1500).
Это, я мог бы исправить чисто с небольшим количеством CSS.
.mejs-container-fullscreen {
background-color: #fff !important;
}
.mejs-container-fullscreen .mejs-mediaelement,
.mejs-container-fullscreen video {
height: 530px !important;
top: 500px !important;
}
.mejs-container.mejs-container-fullscreen .mejs-controls {
bottom: auto !important;
top: 1000px !important; /* video top + video height - controls height (30px) */
}
по общему признанию, это довольно ограниченное решение, и оно сильно зависит от размера видео (и согласованности размера для нескольких видео), а также цвета фона. Но это может сработать для вас, тоже.