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

Dani Alves manda mensagem para Neymar: 'Volte para sua missão!'

Colaboração para o UOL, em São Paulo

10/12/2022 13h28

Classificação e Jogos

Um dia após a eliminação do Brasil nos pênaltis para a Croácia nas quartas de final da Copa do Mundo, Daniel Alves usou sua conta no Instagram para enviar uma mensagem de consolo a Neymar.

O lateral direito afirmou que o companheiro é um grande exemplo de superação para os brasileiros, e convocou o craque do PSG a 'voltar para a missão' com o bom futebol.

Na publicação, Daniel Alves colocou uma foto em que carrega Neymar nos ombros, ambos sorrindo. O lateral direito explicou que escolheu a imagem porque gostaria sempre de se lembrar do camisa 10 dessa maneira.

Daniel Alves avaliou que nem sempre os troféus consagram os melhores, opinando que, muitas vezes, algumas conquistas servem apenas para "alimentar o ego". O atleta ainda afirmou que a maior conquista de um jogador de futebol são as pessoas que eles podem impactar através do esporte.

"Coloco essa imagem primeiro porque é assim que quero sempre quero lembrar de você e quero que também todos lembrem assim de você. Você é exemplo de brasileiro que saiu do nada e conquistou mais do que sonhou. Chorar é parte do processo, mas sorrir é o que faz com que lembremos de que todo o sacrifício que fizemos valeu a pena. Muitas vezes o troféu faz muitas pessoas se equivocarem, achando que são melhores do que as outras porque ganharam… mas não, não sabem que isso é apenas uma distração que alimenta continuamente os seus egos", iniciou o camisa 13 da seleção brasileira.

"Ganhar, para mim que sou considerado o maior vencedor da história desse esporte, significa inspirar pessoas, assim como você, Neymar, faz. Os maiores troféus das nossas vidas sempre serão as pessoas que consigamos impactar nessa sociedade através do nosso exemplo. É para isso que Deus nos deu o nosso dom", acrescentou Daniel Alves.

Por fim, o lateral direito da seleção aconselhou Neymar a não deixar que a tristeza supere a felicidade, e a viver cada sensação, se declarando ao amigo em seguida.

"Você não tem apenas um compromisso com o futebol, você tem um compromisso com a sua missão aqui na terra…. Execute-a com sabedoria. A dor, assim como a felicidade são ageiras, mas a nossa missão é não permitir que a dor seja maior do que a felicidade… mesmo que momentaneamente, mas a vida é feita de momentos. Deixa que doa, deixa que e e volte pra sua missão!! Amo o seu coração meu irmão", completou.

Quem vai ser campeão da Copa do Mundo? Vote!

Enquete encerrada

Total de 7283 votos
20,07%
Stefan Matzke - sampics/Corbis via Getty Images
12,32%
Kirill KUDRYAVTSEV / AFP
5,84%
Matthias Hangst/Getty Images
1,25%
Alex Grimm/Getty Images