;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Allan Simon

OPINIÃO

Texto em que o autor apresenta e defende suas ideias e opiniões, a partir da interpretação de fatos e dados.

Segura, Renata Silveira cumpre missão e abre portas para narradoras na Copa

Renata Silveira é a primeira mulher a narrar um jogo da Copa do Mundo na TV aberta - Reprodução/Instagram
Renata Silveira é a primeira mulher a narrar um jogo da Copa do Mundo na TV aberta Imagem: Reprodução/Instagram

Colunista do UOL

22/11/2022 12h02

Receba os novos posts desta coluna no seu e-mail

Email inválido

A estreia de Renata Silveira nas transmissões da Globo na Copa do Mundo de 2022 não foi evento qualquer. O jogo Dinamarca x Tunísia foi o primeiro a ser narrado por uma mulher na história do evento na TV aberta brasileira. A missão trazia consigo um peso de 52 anos de exibições da maior competição do planeta em nossos televisores, uma trajetória narrada apenas por homens desde 1970. E tudo correu muito bem.

Renata esteve segura em toda a transmissão, que tinha o componente emocional do envolvimento da narradora com a história do jogador Christian Eriksen. O dinamarquês sofreu uma parada cardíaca durante jogo contra a Finlândia na Eurocopa disputada no ano ado, quando ela estava no comando da jornada no SporTV.

Foram quase duas horas segurando a transmissão sem muitas informações, com replays em sequência do momento da queda do atleta do gramado, na espera de atualizações sobre o estado de saúde de Eriksen. Quem viu aquele momento já sabia que Renata Silveira estava preparada para voos mais altos na carreira.

O jogo de estreia em Copas na TV aberta não ajudou muito, já que o empate em 0 a 0 teve poucos momentos de grandes emoções. Renata não subiu o tom além do necessário e nem tentou criar artificialmente esses sentimentos. Há quem goste desse estilo, há quem não goste. Questões de opinião sobre como cada pessoa narra uma partida não cabem em uma análise sobre um feito histórico como o de hoje.

Mais importante é ressaltar que o papel de relatar uma partida de Copa do Mundo em uma das maiores emissoras do mundo foi seguido à risca. Renata, como tantas outras mulheres nas diferentes funções do jornalismo esportivo, estava sujeita a críticas mais pesadas simplesmente por ser uma mulher narrando um jogo. É preciso separar quem simplesmente não aceita essa evolução das transmissões de quem faz apontamentos no sentido de sugerir melhorias.

Esse primeiro grupo não "ganhou" qualquer argumento hoje, não houve erros e deslizes importantes, e Renata provou que merece o lugar que ocupa na Globo. A missão foi cumprida e, mais importante ainda, o caminho está pavimentado para mais narradoras no futuro da TV aberta. Mulheres apaixonadas por futebol e pela narração agora podem sonhar com uma Copa do Mundo também.