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

Liga dos Campeões - 2021/2022

Marcelo confirma adeus ao Real Madrid: 'Foi meu último jogo'

Marcelo é o maior vencedor da história do Real Madrid: 25 títulos - PAUL ELLIS / AFP
Marcelo é o maior vencedor da história do Real Madrid: 25 títulos Imagem: PAUL ELLIS / AFP

Bruno Andrade e Diego Garcia

Do UOL, em Paris (França)

28/05/2022 21h15

Marcelo confirmou neste sábado (28), após o jogo que deu o 14º título da Liga dos Campeões ao Real Madrid, que está deixando o clube que defendeu por 15 anos.

"Foi meu último jogo pelo Real Madrid. Saio do Real Madrid com cabeça erguida, fiz tudo o que podia fazer pelo clube. O clube também sempre me ajudou. Estou fechando um ciclo agora, e não podia terminar melhor, ganhando uma Champions e sendo maior vencedor da história do clube", disse o lateral-esquerdo, na zona mista, deixando em aberto seu próximo o, mas mostrando vontade de permanecer na Europa.

"Próximo o? Não sei. Preciso de dez ou 15 dias de férias, não quero nem saber de telefone. Resolvo [o futuro] depois. Onde quero jogar? Não sei. Quero jogar mais uma Champions ainda, acho que dá para jogar mais uma", completou o camisa 12 merengue, que não entrou em campo na vitória por 1 a 0 sobre o Liverpool, no Stade de , em Paris.

Mesmo não tendo entrado em campo, o lateral entrou na história ao ser o primeiro brasileiro a erguer a taça da Champions League como capitão. Nesta temporada, Marcelo também conquistou os títulos da Supercopa da Espanha e do Campeonato Espanhol.

"Muito feliz de ser o primeiro brasileiro. Na verdade, só de levantar a taça, ganhar uma Champions, jogar uma Champions, e ser ainda o primeiro brasileiro é emocionante. Levar a taça para casa? Queria levar, né? Mas não posso, tenho que deixar ela no clube [risos]", brincou o jogador revelado pelo Fluminense.

O camisa 12, que está no clube merengue desde 2007, é também o maior vencedor do Real Madrid, agora com 25 títulos. Nesta temporada, ele ultraou Francisco Gento, que triunfou 23 vezes no clube da capital da Espanha.