APIs e Microsserviços

11 mar, 2014

Utilizando a API Fullscreen

Publicidade

À medida que caminhamos para aplicações web mais verdadeiras, nossas APIs JavaScript têm feito o melhor possível para acompanhar. Uma nova API JavaScript bastante simples, mas muito útil, é a Fullscreen. A API Fullscreen oferece uma maneira bem pragmática de requisitar a exibição em tela cheia para o usuário, e de sair desse modo de visualização quando desejado. Aqui está como utilizar essa API incrivelmente simples! Veja a demo.

Iniciando o modo Fullscreen

O método requestFullscreen da API Fullscreen ainda é pré-fixado em alguns browsers, então você precisa de fazer alguma pesquisa para encontrar isto:

// Find the right method, call on correct element
function launchFullscreen(element) {
  if(element.requestFullscreen) {
    element.requestFullscreen();
  } else if(element.mozRequestFullScreen) {
    element.mozRequestFullScreen();
  } else if(element.webkitRequestFullscreen) {
    element.webkitRequestFullscreen();
  } else if(element.msRequestFullscreen) {
    element.msRequestFullscreen();
  }
}

// Launch fullscreen for browsers that support it!
launchFullScreen(document.documentElement); // the whole page
launchFullScreen(document.getElementById("videoElement")); // any individual element

Você pode apenas requisitar o método no elemento que quer haja visualização em tela cheia (full screen) e a janela se transforme dessa maneira, requisitando que o usuário permita a visualização em full screen. Lembre que é possível que o usuário rejeite o modo de tela cheia. Se for aceito, as barras de ferramentas sumirão, fazendo com que o documento ocupe a largura e a altura totais da tela.

Saindo do modo Fullscreen

O método exitFullscreen (também pré-fixado em alguns navegadores mais antigos) vai restaurar a janela para o layout padrão:

// Whack fullscreen
function exitFullscreen() {
  if(document.exitFullscreen) {
    document.exitFullscreen();
  } else if(document.mozCancelFullScreen) {
    document.mozCancelFullScreen();
  } else if(document.webkitExitFullscreen) {
    document.webkitExitFullscreen();
  }
}

// Cancel fullscreen for browsers that support it!
exitFullscreen();

Observe que o existFullscreen é chamado apenas no objeto do documento – não há necessidade de passar para o elemento individual.

Propriedades e eventos de Fullscreen

Infelizmente os eventos e as propriedades ainda são pré-fixados, mas isso vai mudar com o tempo. O evento fullscreenchange nos permite saber quando estamos entrando/saindo do modo de tela cheia: você pode detectar qual evento pré-fixado do browser deve usar com o método inicial de detecção de fullscreen.

var fullscreenElement = document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement;
var fullscreenEnabled = document.fullscreenEnabled || document.mozFullScreenEnabled || document.webkitFullscreenEnabled;

Fullscreen CSS

Os browsers oferecem um controle CSS de fullscreen pequeno, mas bem útil:

:-webkit-full-screen {
  /* properties */
}

:-moz-full-screen {
  /* properties */
}

:-ms-fullscreen {
  /* properties */
}

:full-screen { /*pre-spec */
  /* properties */
}

:fullscreen { /* spec */
  /* properties */
}

/* deeper elements */
:-webkit-full-screen video {
  width: 100%;
  height: 100%;
}

/* styling the backdrop*/
::backdrop {
  /* properties */
}
::-ms-backdrop {
  /* properties */
}

Em alguns casos, o Webit precisa de uma ajudinha, então o código acima deve ser bastante útil se você estiver lidando com mídia. Veja a demo. A API Fullscreen é super simples e super útil. A primeira vez que a vi em uso foi em uma demo do MDN do BananaBread, um jogo de tiro em primeira pessoa todo feito no client, uma desculpa perfeita para usar a tela cheia. A API oferece uma forma para entrar e sair do modo de fullscreen, assim como um evento para detectar a mudança de estado da tela cheia, então está tudo coberto. Tenha essa API bacana em mente para novas empreitadas – pode ser útil!

***

Artigo traduzido pela Redação iMasters, com autorização do autor. Publicado originalmente em http://davidwalsh.name/fullscreen