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

A última Copa de Messi e CR7

As principais histórias do último mundial dos melhores jogadores do século

Sai Cristiano Ronaldo, brilha Gonçalo Ramos

e Bruno Andrade

Colunista do UOL, em Doha (Qatar)

06/12/2022 18h02

Classificação e Jogos

O maior jogador da história de Portugal. Dos melhores de todos os tempos. A sua quinta e provável última participação em Copas. Jogo decisivo. Eliminatório. E daí? Reserva nele.

Uma mistura complexa de perplexidade e concordância. O tipo de notícia bombástica que demora bons minutos para engolir e digerir. Houve, inclusive, quem não acreditasse. Eu demorei, sinceramente.

Não é todos os dias que Cristiano Ronaldo é anunciado como suplente. Muito menos na seleção, tampouco num Mundial. Um momento inédito, histórico e também controverso.

Não que o craque não merecesse a saída do time. Merecia, sim. Demorou bastante para ser sacado, aliás. Atrasada ou não, uma opção impactante. Altamente corajosa.

Fernando Santos bateu no peito e colocou a (decadente) estrela no banco logo nas oitavas da final diante da Suíça. Lançou sem medo o ascendente Gonçalo Ramos entre os titulares.

Abro parênteses aqui e peço perdão pela minha arrogância: é preciso conhecer profundamente as entranhas do futebol português para compreender a dimensão desta decisão. Dentro e fora de campo.

De 2004 a 2022, Ronaldo, hoje com 37 anos, foi indiscutível em Portugal. Intocável. Mandava e desmandava. Também liderava. Vencia. Conquistava. Uma Eurocopa e uma Liga das Nações.

O tempo voa. A idade chega. Pesa. Para todos. Até mesmo para aqueles que muitas vezes parecem ter vindo de outro planeta, não do Funchal, na Ilha da Madeira. É preciso abrir espaço a quem também quer e veio para brilhar.

Das grandes surpresas nos 26 convocados para o Qatar, Gonçalo Ramos surgiu quietinho. Tímido. Assim como na infância em Olhão, no Algarve. Da mesma forma também como fez no Benfica, ainda na temporada ada.

Principal artilheiro da atual edição da liga portuguesa, com nove gols, o jovem de 21 anos fez aquilo que o ídolo máximo nos habitou a ver: a rede balançando. Uma. Duas. Três vezes. Um hat-trick inesquecível.

Comandou com excelência um ataque mais móvel, intenso e predador. Justificou ter sido blindado recentemente pelo clube encarnado, onde foi revelado, com uma multa rescisória de 120 milhões de euros (R$ 662 milhões).

Foi o canivete suíço que fez Portugal golear por 6 a 1, jogar como não havia jogado na Copa de 2022 e, consequentemente, garantir a presença nas quartas de final. Uma estreia como titular digna dos gigantes,

Foi, acima de tudo, a sombra de Cristiano Ronaldo, que teve o nome gritado várias vezes no Lusail Stadium e entrou na partida apenas aos 27 minutos do segundo tempo.

Uma luz no fim do túnel. Um presente brilhante que caminha, ainda com o ado ao lado, para ser o futuro promissor.