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

Daniel Alves vai a 42 títulos na carreira e 5 na seleção com foco no Qatar

Do UOL, em São Paulo

07/08/2021 11h31

O lateral-direito Daniel Alves comemora hoje (7) o 42º título de sua carreira no futebol, que completou recentemente 20 anos de profissionalização. Aos 38 anos de idade, ele foi um dos três jogadores acima do limite de 24 escolhidos pelo técnico André Jardine para a campanha que rendeu a medalha de ouro nas Olimpíadas de Tóquio com vitória sobre a Espanha. Só pela seleção brasileira foi a quinta conquista.

Copa das Confederações (2009 e 2013) e Copa América (2007 e 2019) foram os outros títulos com a Amarelinha — ele também soma o Mundial sub-20 de 2003 na contabilidade. O jogador do São Paulo estaria na campanha da Copa América de 2021, mas foi cortado por lesão, o que abriu espaço para a convocação olímpica. Ele sonha estar na Copa do Mundo do Qatar em 2022 para completar aos 39 anos e meio sua galeria de conquistas.

"O objetivo sempre foi muito bem claro, inclusive antes das Olimpíadas. É estar no Mundial de 2022. Esse sonho não mudou, só melhorou pelo fato de que estou tendo a oportunidade de estar aqui representando a seleção brasileira, mesmo sendo de idade diferente do que eu estava acostumado", disse o lateral-direito em entrevista coletiva há dois dias.

Além da seleção, Daniel Alves soma títulos por todos os clubes que defendeu na carreira: Bahia, Sevilla-ESP, Barcelona-ESP, Juventus-ITA, Paris Saint-Germain-FRA e São Paulo. Ele é o maior vencedor da história do futebol.

Todos os títulos de Daniel Alves como profissional:

Bahia (1): Copa do Nordeste (2002)
Seleção (5): Copa América (2007 e 2019), Copa das Confederações (2009, 2013), Olimpíadas (2021)
Sevilla (5): Copa da Uefa (2005/2006 e 2006/2007), Supercopa da Uefa (2006), Copa do Rei (2006/2007), Supercopa da Espanha (2007)
Barcelona (23): Liga dos Campeões (2008/2009, 2010/2011, 2014/2015), Campeoonato Espanhol (2008/2009, 2009/2010, 2010/2011, 2012/2013, 2014/2015, 2015/2016), Copa do Rei (2008/2009, 2011/2012, 2014/2015, 2015/2016), Supercopa da Espanha (2009, 2010, 2011, 2013), Supercopa da Uefa (2009, 2011, 2016), Mundial (2009, 2011, 2015)
Juventus (2): Copa da Itália (2016/2017), Campeonato Italiano (2016/2017)
PSG (5): Campeonato Francês (2017/2018, 2018/2019), Copa da França (2017/2018), Copa da Liga da França (2017/2018), Supercopa da França (2017)
São Paulo (1): Campeonato Paulista (2021)