;(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 2019/2020

Neymar brinca com moicano e diz que coloca jogo do PSG entre seus melhores

PSG bateu a Atalanta por 2 a 1 e avançou às semifinais da Liga dos Campeões - David Ramos/Getty Images
PSG bateu a Atalanta por 2 a 1 e avançou às semifinais da Liga dos Campeões Imagem: David Ramos/Getty Images

Do UOL, em São Paulo

12/08/2020 18h15

A vitória por 2 a 1 sobre a Atalanta hoje colocou o Paris Saint-Germain nas semifinais da Liga dos Campeões da Europa 2019/2020. Neymar acredita que o time pode chegar ainda mais longe na competição e colocou a partida entre as melhores viradas de sua carreira.

"Eu acho que vou colocar na minha prateleira como uma das melhores, só faltou a nossa torcida aqui para ter o estádio cheio, a emoção seria maior. Está entre as três viradas históricas da minha carreira, estou muito feliz. Me sinto um cara predestinado nesse momento. Eu gosto de jogos assim, nesse nível fico muito contente e empolgado em jogar", afirmou o camisa 10, em entrevista transmitida pelo Esporte Interativo.

A cobrança para ser sempre o protagonista em campo não incomoda o brasileiro. "Não jogo para responder para ninguém. Todo mundo sabe da minha qualidade. Não é de hoje, de ontem que nasci para o futebol, tem muito tempo isso. Jogo para ajudar meus companheiros. Jogo para ser melhor do que eu mesmo a cada jogo, cada treino. Gosto de estar sempre melhorando e é para isso que estou aqui; para crescer como jogador e como homem e tentar levar meu time para a final", disse.

Já em relação a seu visual, ele entrou na brincadeira: "O moicano está aqui a pedido da galera do Brasil. Quero agradecer todo o carinho".

O jogador mostrou confiança de chegar à final da competição: "Tenho em minha cabeça que vamos chegar à final. Ninguém vai tirar da minha cabeça que vamos até a final, e vamos disputar o título".

"Demos mais um o. Vai ser muito complicado, mas vamos juntar nossas forças para fazer mais uma grande partida", acrescentou.

O PSG perdia do time italiano por 1 a 0 até os 45 minutos do segundo tempo, mas virou com gols de Marquinhos e Eric Maxim Choupo-Moting. Neymar participou das jogadas dos dois gols parisienses.

Terminado o jogo no Estádio da Luz, em Lisboa, Neymar elogiou a atuação da Atalanta.

"A Atalanta é uma grande equipe, uma surpresa na competição. Sabíamos que enfrentaríamos uma equipe muito agressiva", destacou o brasileiro.

"Estou muito contente por ter feito uma grande partida com todos eles (companheiros). Agora é descansar. Estou cansado. Foi uma partida que exigiu muito, mas estou muito feliz", acrescentou.

Perguntado, Neymar disse que "nunca" pensou na possibilidade de uma eliminação. E afirmou que a vontade de vencer a Champions cresceu.

"Já tínhamos a vontade de vencer a Champions antes deste jogo, agora (a vontade) é maior. São dois jogos (para um possível título), um até a final. Temos que respeitar os adversários, mas faremos de tudo para ganhar", completou.

Nas semifinais, o PSG enfrenta RB Leipzig ou Atlético de Madri, que se enfrentam amanhã no estádio José Alvalade, em Lisboa. O time francês joga pelas semifinais no dia 18.