;(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.

Luis Roberto recupera voz e comanda fim de semana histórico na Copa

Luis Roberto, narrador da TV Globo, durante a transmissão de Espanha x Alemanha na Copa de 2022 - Reprodução/TV Globo
Luis Roberto, narrador da TV Globo, durante a transmissão de Espanha x Alemanha na Copa de 2022 Imagem: Reprodução/TV Globo

Colunista do UOL

27/11/2022 19h04

Receba os novos posts desta coluna no seu e-mail

Email inválido

A pausa por três dias de jogos forçada por um problema na voz após um quadro de sinusite foi suficiente para que o narrador Luis Roberto voltasse ao ar na Globo em um dos momentos mais importantes da Copa do Mundo de 2022. Depois de substituir Galvão Bueno no jogo de abertura, no último dia 20, o locutor apresentou rouquidão durante a transmissão da estreia da França na terça-feira (22) e precisou ser afastado pela emissora para se tratar.

A volta de Luis Roberto aconteceu ontem, e de cara a missão foi narrar Argentina x México. O jogo trazia uma carga extra de drama, já que o time de Lionel Messi estreou com derrota para a Arábia Saudita na competição e corria risco de ser eliminado em caso de novo resultado reverso. O narrador da Globo, hoje uma espécie de "número 2", logo após Galvão", deu conta do recado e injetou doses de emoção na partida, que terminou em vitória argentina por 2 a 0.

Usando expressões e bordões que já o caracterizam há anos ("com fé no pé", "sabe de quem?", etc.), mas também arriscando novas marcas, como o "eu quero é gritar gol", Luis Roberto buscou enfatizar muito as jogadas de Messi, mesmo quando o craque ainda nem tinha brilhado no duelo contra os mexicanos.

O auge da empolgação do narrador veio quando justamente Messi foi o autor do primeiro gol da Argentina. Ficava comprovado ali que a voz estava recuperada, e que a missão de narrar a Copa in loco poderia seguir em frente.

O jogo que marcou a volta de Luis Roberto ao ar conquistou o posto de maior audiência nacional da Globo na Copa sem contar o jogo do Brasil contra a Sérvia, fazendo 28 pontos no PNT ( Nacional de Televisão), que é a média ponderada de todas as 15 praças regionais com medição do Ibope.

Hoje, um dia depois, a missão era muito parecida, mas com ainda mais drama. O jogo era um clássico europeu, Espanha x Alemanha. Os alemães também chegavam pressionados por uma derrota inesperada na estreia, mas para o Japão, em partida que Luis Roberto deveria ter transmitido na quarta-feira (23), mas acabou ficando fora por causa do quadro de sinusite.

Diferentemente da Argentina, a Alemanha não entrou em campo podendo ser eliminada já neste domingo, uma vez que o Japão perdeu para a Costa Rica e acabou embolando o grupo. Mas uma nova derrota deixaria a tetracampeã mundial em situação muito complicada. Ali estava a carga extra de emoção que Luis Roberto precisava.

Não havia um craque como Messi em campo, mas o narrador da Globo manteve o tom da narração do dia anterior. Cresceu as expectativas nas faltas frontais ao gol, se empolgou com os lances perigosos e soltou a voz com toda a potência nos dois gols do jogo, aproveitando também uma vantagem sobre vários outros narradores nesta Copa: fazer as transmissões de dentro dos estádios, sentindo o clima e o calor da torcida, da partida, do evento.

A missão terminou com a maior audiência de jogos sem Brasil na Copa até agora em São Paulo, com 29 pontos, e os mesmos 28 no PNT conquistados no dia anterior com Argentina x México.

O fim de semana era um teste e tanto para Luis Roberto, e ele ou. Agora o próximo desafio é a narração de Portugal x Uruguai, nesta segunda (28), às 16h (horário de Brasília), um jogo que será diferente e promete ter boa audiência também, já que será logo após a segunda participação do Brasil na Copa, contra a Suíça, que Galvão Bueno narrará às 13h.