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

Agora em paz com PSG, Neymar volta ao palco de agressão a torcedor

Xavier Laine/Getty Images
Imagem: Xavier Laine/Getty Images

João Henrique Marques

Colaboração para o UOL, em Paris (França)

24/07/2020 04h00

O Stade de , em Saint-Denis, ao norte de Paris, é de dura lembrança para Neymar. O camisa 10 do Paris Saint-Germain viveu ali uma noite traumática após perder a final da Copa da França para o Rennes na decisão por pênaltis, na temporada ada, em capítulo determinante para forçar a transferência ao Barcelona. Agora, a segunda tentativa de conquistar um título no principal palco do futebol francês é marcada pela retomada da alegria do brasileiro no PSG.

Novamente, o duelo é de decisão pela Copa da França. O confronto entre PSG x Saint-Étienne será realizado hoje (24), às 16h (de Brasília). O estádio também é traumático para a seleção brasileira, que perdeu no local a decisão da Copa do Mundo para a França por 3 a 0, em 1998.

Na derrota para o Rennes em abril de 2019, Neymar teve ótima atuação no empate no tempo normal por 2 a 2. Ele deu assistência para o gol marcado por Daniel Alves e fez um golaço de cobertura. Na disputa de pênaltis, ele converteu sua cobrança, mas o adversário venceu por 5 a 4.

O confronto é marcado por uma série de problemas para Neymar. Após a derrota, o brasileiro reagiu contra um espectador quando ia receber sua medalha de prata. "Você, aprende a jogar futebol!", disparou o torcedor, a quem Neymar respondeu com um soco rosto. Em outros vídeos é possível ver o mesmo torcedor fazendo comentários ofensivos e, inclusive, lançando insultos a outros jogadores do Paris Saint-Germain.

"Estou errado? Estou. Mas ninguém tem sangue de barata", reconheceu no Instagram o brasileiro, que foi punido com três partidas de suspensão no Campeonato Francês.

Neymar já não tinha paciência com os companheiros de vestiário no PSG. Ao perder a final fez críticas públicas aos jogadores do time:"Precisa ser mais homem no vestiário, precisa ser mais unido. Todo mundo correr. Eu vejo que tem muito jovem ali que é um pouco, não digo perdido, mas falta mais ouvido do que boca. Eles têm que escutar mais do que falar. Às vezes, um cara mais experiente fala e eles retrucam. O próprio treinador fala e eles retrucam. Isso não é um time que vai longe", atacou Neymar.

A derrota na final deixou Neymar desacreditado no sucesso do PSG na temporada seguinte. Foi neste momento que as conversas com Lionel Messi eram em tom de pedido de ajuda para conseguir voltar ao Barcelona.

A reviravolta

ado mais de um ano, e novamente na final da Copa da França, Neymar hoje é marcado pela euforia com os companheiros de vestiário no PSG. A "a" do camisa 10 antes reduzida a Marquinhos, Thiago Silva e Daniel Alves, agora tem nomes de peso como Kylian Mbappé, Angel Di Maria, Mauro Icardi e Marco Verratti. São várias as reuniões com os jogadores em jantares na cidade.

Aos amigos, Neymar diz que sua atual relação com o elenco do PSG lembra o bom ambiente do Barcelona, em que o brasileiro era próximo de jogadores importantes, como Gerard Piqué, Lionel Messi e Luis Suárez. No clube francês, ele superou desavenças iniciais com Cavani e algumas brigas com jogadores menos renomados, como Presnel Kimpembe e Julian Draxler.

Agora extremamente confiante, Neymar ou um discurso de otimismo em relação à possibilidade de conquista da Copa da França, da Copa da Liga da França (dia 31 de julho diante do Lyon) e até da Liga dos Campeões (PSG encara a Atalanta, nas quartas de final, dia 12 de agosto).

O ânimo de Neymar foi notado internamente pela maneira como ele encarou os amistosos preparatórios para a reta final da temporada. Os jogos realizados após quatro meses de paralisação por conta da pandemia do novo coronavírus foram tratados como decisivos, segundo o próprio camisa 10 expôs em suas redes sociais. O PSG goleou o Le Havre por 9 a 0, o Waasland-Beveren por 7 a 0 e o Celtic por 4 a 0.

"Não estou surpreso com a forma de Neymar. Ele voltou em um bom estado de espírito, boa forma. Ele se adapta ao treinamento super rapidamente, ganha habilidades muito, muito rapidamente. Para ele, é importante jogar muitos minutos. Ele está numa forma em que é decisivo para nós", disse o treinador do PSG, Thomas Tuchel.