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

Galvão chora em despedida da Copa: 'Sem os brasileiros não estaria aqui'

Galvão Bueno se emociona em despedida na transmissão da final da Copa - Reprodução/Globo
Galvão Bueno se emociona em despedida na transmissão da final da Copa Imagem: Reprodução/Globo

Do UOL, em São Paulo

18/12/2022 15h54

Classificação e Jogos

Galvão Bueno chorou em seu último discurso que marcou sua despedida das narrações em TV aberta. Ele comandou a transmissão da final da Copa do Mundo do Qatar hoje, que coroou a Argentina campeã após uma vitória épica sobre a França.

A Globo exibiu um vídeo especial com os torcedores brasileiros imitando Galvão Bueno, entoando os principais bordões e agradecendo o narrador por tantos anos em transmissões de jogos. Além disso, a emissora também relembrou as narrações do comunicador que marcaram a história do esporte brasileiro.

"Eu que tenho que agradecer nesses quase 50 anos todas as Copas do Mundo. Foram muitos jogos. Eu não vou citar nomes, porque iria deixar muita gente de fora, mas agradeço meus parceiros antigos, os de hoje, aqueles que não estão mais aqui. Agradeço os que não estão mais trabalhando comigo e estiveram junto", falou o narrador emocionado.

Vote: Quem está se destacando mais na TV durante a Copa do Mundo?

Mas meu maior agradecimento é a vocês: os brasileiros. Foram praticamente quatro gerações até chegar aqui hoje. Eu estou emocionado e até a voz acabou. Estou emocionado porque alguma coisa boa eu fiz se não aqui não estaria. Não agradei todo mundo e tudo bem. Estivemos juntos em muitos momentos: alegrias, tristezas, dramas, mas sempre juntos".
Galvão Bueno.

Galvão não foi o único emocionado. A comentarista Ana Thais Matos também derramou lágrimas ao lado do narrador e recebeu uma homenagem dele.

Ana Thaís Matos se emociona em despedida de Galvão durante transmissão na final da Copa - Reprodução/Globo - Reprodução/Globo
Ana Thaís Matos se emociona em despedida de Galvão durante transmissão na final da Copa
Imagem: Reprodução/Globo

"Olha, vamos chegando ao final. Um mês de cobertura. Eu quero dar parabéns a você, Ana, pela sua presença, volto a dizer: você está abrindo portas. Seja muito bem-vinda em outras Copas. Não estaremos mais juntos, mas seja muito bem-vinda. Você representa uma vitória entre as mulheres num trabalho que sempre teve muitos homens", disse o narrador à comentarista.

"Galvão eu agradeço. Me sinto muito honrada em trabalhar com você, em fazer parte da sua ultima Copa", respondeu Ana.

Apesar da aposentadoria das narrações, o telespectador ainda verá Galvão na tela da Globo. A emissora anunciou a renovação de contrato na última sexta-feira.

"Eu só tenho a agradecer. Eu poderia querer mais na minha profissão. Eu só tenho a agradecer e começo agradecendo a Deus. Minha família, meu pai, minha mãe, Lúcia - minha primeira mulher, a Desireé, meus filhos, meus sete netos. Vem mais por aí. Tenho certeza que vem mais por aí", comentou Galvão.

"E queria agradecer vocês meus amigos. Que estão representando todos os que trabalharam comigo. Quero agradecer a Globo e eu não vou sair daqui. Eu não consigo viver sem vocês. Quero dar parabéns a todo mundo que esteve aqui no Qatar e a mais de 500 pessoas que trabalharam no Brasil", concluiu.

O acordo prevê a participação do comunicador em um programa por ano na TV Globo e a locução de chamadas do Esporte da emissora