Questão de Programação — Linguagens de programação — FGV 2024
Programação›Linguagens de programação
Código
fg097563
Banca
FGV
Órgão
TCE-PA
Ano
2024
Nível
Superior
Cargo
Auditor de Controle Externo - Área de Informática - Web Design
Combinar funções e métodos JavaScript é uma opção para criar experiências responsivas em diferentes dispositivos.Nesse contexto, considerando as limitações de processamento de dispositivos móveis, para monitorar mudanças no tamanho da janela, poderíamos
Averificar o tamanho da janela no evento 'DOMContentLoaded'.
Busar o método “window.addEventListener('load')”.
Cusar “window.matchMedia” para criar uma Media Query e adicionar um listener.
Dusar o método “window.resize” juntamente com um listener.
Eusar o método “window.addEventListener('resize')”.
Revelar gabarito e comentário▾
GabaritoC — usar “window.matchMedia” para criar uma Media Query e adicionar um listener.
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
JavaScript: Monitoramento de Redimensionamento da Janela
Gabarito: letra C. A alternativa C utiliza window.matchMedia para criar uma Media Query e adicionar um listener que dispara apenas quando a condição da media query muda – abordagem mais eficiente para dispositivos móveis, pois evita chamadas excessivas de eventos contínuos como o resize. As demais opções são inadequadas: A e B não monitoram mudanças contínuas, D não é um método válido e E, embora funcione, é menos eficiente em termos de performance.
A questão contextualiza a monitoração do tamanho da janela em dispositivos móveis, que possuem recursos limitados. O evento resize (alternativa E) é a forma mais comum, mas ele é disparado continuamente durante o redimensionamento, podendo sobrecarregar o dispositivo. A alternativa C oferece uma solução mais otimizada.
Monitorar redimensionamento (janela)
1Eventos contínuos (ineficientes)
resize (dispara a cada pixel)
2Eventos únicos (não monitoram)
DOMContentLoaded
load
3Solução otimizada
matchMedia + listener change
Dispara só na mudança da condição
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
O evento DOMContentLoaded é disparado uma única vez, quando o DOM é completamente carregado. Ele não monitora mudanças futuras no tamanho da janela. Serve para inicialização, não para redimensionamento.
Alternativa B — ❌ Incorreta
O evento load também é disparado uma única vez, após o carregamento completo da página (incluindo imagens e scripts). Não reage a redimensionamentos.
Alternativa C — ✅ Correta ⟵ GABARITO
window.matchMedia retorna um objeto MediaQueryList. Ao adicionar um listener com addEventListener('change', handler), a função é chamada apenas quando o resultado da media query muda (ex.: de true para false), e não a cada pixel de redimensionamento. Isso reduz significativamente a carga de processamento, tornando-a ideal para dispositivos móveis. Exemplo:
window.resize não é um método padrão do JavaScript. O método correto para disparar um redimensionamento programático seria window.resizeTo(width, height), mas ele não serve para monitorar mudanças. Não existe window.resize como função de monitoramento.
Alternativa E — ❌ Incorreta
window.addEventListener('resize', handler) é o método tradicional para monitorar redimensionamento. Funciona, mas dispara o evento em alta frequência durante o redimensionamento, o que pode causar lentidão em dispositivos móveis. Embora seja possível usar técnicas de debounce/throttle, a própria questão destaca a limitação de processamento, tornando a alternativa C mais adequada.
NÃO CAIA NESSA!
Muitos candidatos marcam a alternativa E por ser a mais conhecida, mas a questão pede a melhor prática considerando limitações de dispositivos móveis. A banca espera que você conheça a diferença de desempenho entre o evento resize e o matchMedia. O resize é o "jeito comum", mas não o mais eficiente nesse contexto.
PEGA ESSA DICA!
Para provas de concursos sobre JavaScript para mobile, lembre-se: matchMedia é preferível quando você precisa reagir a mudanças de viewport apenas em breakpoints específicos. Se precisar de monitoramento contínuo, use resize com throttle (como requestAnimationFrame), mas a abordagem com matchMedia é mais leve e direta.