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

Cavani relembra polêmica com Neymar e afirma: "Somos muito diferentes"

Cavani entra no lugar de Neymar em partida do PSG contra o Nantes pelo Campeonato Francês - REUTERS/Charles Platiau
Cavani entra no lugar de Neymar em partida do PSG contra o Nantes pelo Campeonato Francês Imagem: REUTERS/Charles Platiau

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

07/10/2020 10h54

Reforço do Manchester United, Edinson Cavani negou a existência de problemas com Neymar durante sua agem pelos Paris Saint-Germain. O uruguaio tratou o episódio da temporada 2017/2018, em jogo contra o Lyon, como caso isolado e afirmou que o brasileiro é um "bom menino".

Em entrevista à ESPN argentina, Cavani itiu ser muito diferente de Neymar, mas destacou a importância do relacionamento dentro das quatro linha. Para o camisa 7 do time inglês, "não temos que ser todos irmãos, o que conta em um grupo é ser amigo dentro de campo, cuidar uns dos outros e correr pelo outro".

"Sinceramente, vejo o Ney como um bom menino. O único momento que discuti com Ney, e todos sabem, foi na partida contra o Lyon, que teve uma discussão entre nós e inclusive tivemos uma conversa com ele no vestiário. Depois, todas essas coisas que podem dizer ou que foram ditas, de nossas brigas e discussões, não são verdade. Sinceramente, não são verdade. Somos muito diferentes", falou Cavani.

Em sua primeira temporada no PSG, Neymar disputou com Cavani o posto de principal batedor de pênaltis do clube. No jogo contra o Lyon, por exemplo, o brasileiro ficou insatisfeito ao ver o companheiro bater - e desperdiçar - uma penalidade.

"Como sempre digo, e se chegar a ser técnico, vou dizer aos jogadores: dentro de um grupo, não temos que ser todos amigos ou irmãos. O que conta em um grupo, para mim, é ser amigo dentro de campo, cuidar uns dos outros e correr pelos outros. Depois, em um vestiário, não precisa tomar mate com todos, nem sair para comer com todos. O que não se negocia é o respeito dentro de campo e o compromisso, dentro de campo, para com teus companheiros. Sim, somos muito diferentes. Sim, não compartilhamos tantas coisas. Sim, não pensamos da mesma maneira. Mas isso não implica que não tenhamos uma boa relação", destacou o novo camisa 7 do United.

"Para mim, dentro de campo, há coisas que não se negociam. Se está aí, é para defender uma camisa; o objetivo de todos tem que ser o mesmo. Fora de campo, cada um tem sua vida. Somos todos diferentes, culturas diferentes, falamos línguas diferentes e nos comportamos de forma diferente, mas, dentro de campo, me respeite e eu te respeito e te cuido. Se todos temos esse raciocínio, é a maneira que funcionam os times. Nos grandes times que ganham coisas importantes, nem todos os jogadores são irmãos", concluiu.