Полноэкранный режим браузера Fullscreen javascript API
При разработке WEB приложений для комфортного просмотра конента на смартфонах и планшетах часто требуется перевести браузер в режим полноэкранного отображения страницы напрямую средствами сайта и так же вернуть к режим по умолчанию. Для этого был разаботан инструмент входящий в спецификацию HTML 5 - Fullscreen javascript API.
Спецификация Fullscreen javascript API включает:
- 2 метода: requestFullScreen и cancelFullScreen
- 2 свойства объекта document: fullscreenElement и fullscreenEnabled
- 1 событие: fullscreenchange
В идеале за включение полноэкранного просмотра страницы должно отвечать одна строчка кода, но разработчики браузеров до сих пор не могут согласовать спецификацию и кросбраузерное решение возможно только с преминением префиксов.
Включить полноэкранный режим с помощью API Fullscreen javascript
document.documentElement.requestFullScreen(); // отобразить страницу в полноэкранном режиме document.getElementById("video1").requestFullScreen(); // отобразить элемент в полноэкранном режиме
Выйти из полноэкранного режима отображения страницы сайта.
document.cancelFullScreen();
Свойства объектов Fullscreen
fullscreenElement = document.fullscreenElement; // элемент который в данный момент находится в полноэкранним режиме fullscreenEnabled = document.fullscreenEnabled; // статус (true или false)
Событие API Fullscreen об изменениии режима
element.addEventListener("fullscreenchange", function(e){ console.log('статус fullscreen = ', document.fullscreenEnabled); });
Кроссбраузерное решение API Fullscreen javascript для переключения режимов полноэкранного отображения контента
//Запустить отображение в полноэкранном режиме function launchFullScreen(element) { if(element.requestFullScreen) { element.requestFullScreen(); } else if(element.mozRequestFullScreen) { element.mozRequestFullScreen(); } else if(element.webkitRequestFullScreen) { element.webkitRequestFullScreen(); } } // Выход из полноэкранного режима function cancelFullscreen() { if(document.cancelFullScreen) { document.cancelFullScreen(); } else if(document.mozCancelFullScreen) { document.mozCancelFullScreen(); } else if(document.webkitCancelFullScreen) { document.webkitCancelFullScreen(); } } var onfullscreenchange = function(e){ var fullscreenElement = document.fullscreenElement || document.mozFullscreenElement || document.webkitFullscreenElement; var fullscreenEnabled = document.fullscreenEnabled || document.mozFullscreenEnabled || document.webkitFullscreenEnabled; console.log( 'fullscreenEnabled = ' + fullscreenEnabled, ', fullscreenElement = ', fullscreenElement, ', e = ', e); } // Событие об изменениии режима el.addEventListener("webkitfullscreenchange", onfullscreenchange); el.addEventListener("mozfullscreenchange", onfullscreenchange); el.addEventListener("fullscreenchange", onfullscreenchange);
Стилизация CSS для fullscreen API
Псевдокласс :full-screen предназначен для стилизации элементов в полноэкранном режиме.
Ниже приведен пример с префиксами -webkit- и -moz- , которые через некоторое время можно будет опустить и использовать просто :full-screen.
/* красный фон для полноэкранного режима */ :-webkit-full-screen { background: red; } :-moz-full-screen { background: red; } /* полноэкранное отображение <video> */ :-webkit-full-screen video { width: 100%; height: 100%; } :-moz-full-screen video { width: 100%; height: 100%; }
Как задействовать API Fullscreen javascript через IFRAME?
Часто необходимо вывести контент в полноэкранном режиме транслируемый через IFRAME, например полноэкранное видео. Для этого необходимо добавить аттрибут allowfullscreen к элементу iframe. Не забываем о префиксах.
<iframe webkitallowfullscreen="true" mozallowfullscreen="true" allowfullscreen="true" src="http://google.com" />
Ещё один переключатель полноэкранного режима браузера
function toggleFullScreen() { var doc = window.document; var docEl = doc.documentElement; var requestFullScreen = docEl.requestFullscreen || docEl.mozRequestFullScreen || docEl.webkitRequestFullScreen; var cancelFullScreen = doc.exitFullscreen || doc.mozCancelFullScreen || doc.webkitExitFullscreen; if(!doc.fullscreenElement && !doc.mozFullScreenElement && !doc.webkitFullscreenElement) { requestFullScreen.call(docEl); } else { cancelFullScreen.call(doc); } }
Для упрощения разработки можно использовать хороший общий API от Синдре Сорхуса (Sindre Sorhus) — модуль Screenfull.js, который объединяет два немного разных JS API и вендорные префиксы в один последовательный API.
Дата публикации:В этом посте частично был использован материал сайта © https://www.frontender.info/fullscreen/