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

'Vão me fazer chorar antes, durante e depois', diz Galvão antes da final

Galvão Bueno fala sobre despedida no Esporte Espetacular - Reprodução
Galvão Bueno fala sobre despedida no Esporte Espetacular Imagem: Reprodução

Do UOL, em São Paulo

18/12/2022 10h24

Classificação e Jogos

Hoje, Galvão Bueno se despede das narrações no grupo Globo com a final da Copa do Mundo entre Argentina e França. Após mais de 40 anos comandando transmissões esportivas, o locutor de 72 anos deixará o microfone de lado, mas seguirá exercendo outras funções na emissora até 2024. No Esporte Espetacular, ele falou sobre o sentimento sobre narrar seu último jogo.

"Não sei como eu estou me sentindo hoje. Eu acordei hoje para fazer mais uma final de Copa do Mundo. Vir à Copa do Mundo é a realização do profissional do esporte, do comunicador. Você, então, imagina vir a 14 Copas do Mundo, fazer nove finais?", disse Galvão.

Então eu agradeço a todo mundo, aos meus parceiros, agradeço demais aos milhões de telespectadores brasileiros, foram quatro gerações nestes mais de 40 anos. Eu não sei como vai ser quando acabar. Vão me fazer chorar antes, durante e depois. Eu sou chorão mesmo"
Galvão durante a interação com Marcelo Adnet, Tiago Medeiros e Bárbara Coelho.

Galvão aproveitou para confirmar a renovação de seu contrato com o Grupo Globo. A emissora anunciou o acordo na sexta-feira, que prevê a participação do comunicador em um programa por ano na TV Globo e a locução de chamadas do Esporte da emissora.

"Por um lado tem uma tristeza, porque eu não vou fazer mais o que faço há mais de 40 anos, mas há um sentimento de alegria. Eu estou virando uma página não estou fechando um livro. Continuo na Globo por mais dois anos, fazendo outras coisas", destacou o narrador.

Em sua conta oficial no Twitter, Galvão brincou ao dizer que não iria participar do último jogo para não precisar se despedir. "Já estou no estádio para minha última transmissão de Copa do Mundo em TV aberta. Jogão? Mas tô me sentindo meio esquisito. Acho que não vou narrar (risos). Para não ser a última. E agora já sei como o Arnaldo se sentiu na Rússia".

Veja fotos do encerramento e da grande final da Copa do Mundo do Qatar

Quem foi o melhor jogador da Copa do Mundo? Vote!

Resultado parcial

Total de 1864 votos
2,52%
FRANCK FIFE/AFP
0,05%
Evrim Aydin/Anadolu Agency via Getty Images
0,54%
Justin Setterfield/Getty Images
1,34%
Ulrik Pedersen/DeFodi Images via Getty Images
12,55%
Odd ANDERSEN / AFP
73,39%
Kai Pfaffenbach/Reuters
1,61%
Pablo Morano/BSR Agency/Getty Images
4,67%
Justin Setterfield/Getty Images
0,64%
Shaun Botterill/Getty Images
2,68%
Catherine Ivill/Getty Images