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

Teve contato? Pênalti sofrido por Neymar em amistoso gera polêmica; assista

Pênalti sofrido por Neymar em amistoso do PSG gera debate sobre fama de cai-cai do brasileiro - Reprodução/Twitter
Pênalti sofrido por Neymar em amistoso do PSG gera debate sobre fama de cai-cai do brasileiro Imagem: Reprodução/Twitter

Colaboração para o UOL, em São Paulo (SP)

25/07/2022 11h30

Neymar marcou dois gols na manhã de hoje (25) e comandou a goleada do Paris Saint-Germain por 6 a 2 sobre o Gamba Osaka (JAP), em amistoso de pré-temporada. No entanto, o pênalti sofrido pelo camisa 10 no duelo ganhou destaque nas redes sociais e está gerando polêmica por ser ou não "fantasma".

Aos 30 minutos da partida, quando o PSG estava vencendo por 1 a 0, Neymar sofreu uma falta na área e o juiz marcou pênalti - que foi convertido pelo próprio brasileiro. Só que um ângulo do lance coloca em dúvida se o defensor da equipe japonesa tocou ou não no pé direito do astro do PSG.

O vídeo da jogada viralizou internacionalmente e colocou torcedores em lados opostos. Enquanto alguns acreditam que Neymar sofreu o contato do adversário, outros revivem a fama antiga de 'cai-cai' do craque.

"Clássico Neymar, caindo com paixão em um amistoso", cornetou um internauta. "Você é cego, ele claramente acerta Neymar", rebateu outro. Teve também quem ficou em cima do muro. "Esse é o ponto, não dá para dizer desse ângulo se tem ou não contato", ponderou um terceiro.

Neymar rebate

Algumas horas depois do apito final, Neymar foi ao Twitter desabafar sobre as acusações do lance em questão. Respondendo à uma publicação do 'GE', o atacante disparou contra o termo "fantasma" sobre o pênalti.

"Fantasma? ge sendo ge... Tocou é pênalti! Bando de gente que nunca sequer chutou uma bola e fica fazendo matéria de ****", rebateu.

Na sequência, ele publicou uma foto fazendo "careta" para os críticos.

Críticas de internautas

Diversos fãs de futebol ao redor do mundo acusaram o jogador de 30 anos de simular a penalidade. "Nova temporada, mesmo Neymar", comentou uma página dedicada à modalidade. "Especialista em se jogar", ironizou um usuário do Twitter.

Já quem defendeu o brasileiro alegou que Neymar levou sim um contato e que sofre com perseguição. "O cara literalmente chutou o Neymar e tão falando que ele cavou. O tanto que caçam ele é piada", disse um torcedor.

"Pênalti. Não entendo o motivo pelo qual a turma se irrita quando um atacante 'vende' um pênalti pro árbitro perceber o contato. Se ele fica em pé pode ar batido. É uma marcação eterna com Neymar que não tem base", completou outro.

O duelo marcou o final da turnê de pré-temporada da equipe parisiense pelo Japão. O primeiro compromisso oficial do PSG na nova temporada acontece no próximo domingo (31), pela Supercopa da França, contra o Nantes. Já a estreia pelo Campeonato Francês será em 6 de agosto, diante do Clermont.

Confira o lance por vários ângulos:

Veja reações: