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

Rodolfo Rodrigues

OPINIÃO

Texto em que o autor apresenta e defende suas ideias e opiniões, a partir da interpretação de fatos e dados.

Por que Messi foi melhor que Neymar na primeira fase da Copa América

Messi salta em comemoração de gol da Argentina contra a Bolívia pela Copa América - CHICO FERREIRA/FUTURA PRESS/FUTURA PRESS/ESTADÃO CONTEÚDO
Messi salta em comemoração de gol da Argentina contra a Bolívia pela Copa América Imagem: CHICO FERREIRA/FUTURA PRESS/FUTURA PRESS/ESTADÃO CONTEÚDO

Colunista do UOL

30/06/2021 04h00

Brasil e Argentina aram tranquilos pela primeira fase da Copa América 2021, invictas e sem grandes sustos. Ambas as seleções conquistaram três vitórias, um empate e sofreram apenas dois gols. A seleção brasileira, porém, foi um pouquinho melhor no ataque, marcando 10 gols contra 7 da Argentina.

Nas duas seleções, os dois protagonistas, Neymar e Messi, foram muito bem, jogando o esperando. O camisa 10 da seleção argentina foi melhor até aqui. Em 4 jogos, o craque do Barcelona marcou 3 gols (é o artilheiro da competição), deu 2 assistências e foi o melhor em dribles certos, chutes certos e duelos ganhos entre todos os jogadores segundo as estatísticas do site SofaScore.

Neymar, em 3 jogos (não atuou no último contra a Colômbia), marcou 2 gols e deu 2 assistências, além de ser o jogador com mais grandes chances criadas.

Nessa Copa América, apesar de ainda não jogar todo futebol do seu auge no Barcelona, Messi vem mostrando um desempenho acima do comum em seus jogos pela seleção argentina. Mais tranquilo em campo, mais leve, menos tenso, o camisa 10 vem jogando com bastante disposição, com arrancadas, dribles e várias tentativas de gol. Inclusive, quebrou um jejum de 16 jogos sem marcar gols de bola rolando pela seleção.

Depois de marcar um gol no empate contra o Chile, na estreia, Messi deu a assistência para Guido Rodríguez na vitória sobre o Uruguai, e marcou dois gols e deu uma assistência na goleada por 4 x 1 sobre a Bolívia. Apenas na vitória contra o Paraguai não marcou ou deu assistências.

Neymar não ficou muito atrás. Na estreia contra a Venezuela, marcou um gol de pênalti e deu uma assistência. Contra o Peru, voltou a marcar e brilhou na goleada por 4 x 0 com dribles e jogadas de efeito. Já na virada contra a Colômbia, foi dele o e para o gol da vitória de Casemiro.

Maior artilheiro da seleção argentina com 75 gols, Messi está a dois gols do recorde de Pelé, o sul-americano com mais gols por seleções (77). Além disso, busca o seu primeiro título pela seleção principal da Argentina (foi campeão olímpico em 2008) e Mundial Sub-20 em 2005. Neymar, com 68 gols pela seleção brasileira, segue também na perseguição do recorde de Pelé e em busca de sua primeira Copa América (não fez parte do elenco campeão de 2019 por estar lesionado).

Até aqui, nessa primeira fase da Copa América 2021, Messi foi um pouco melhor e mais decisivo que Neymar. Seria muito interessante ver esse duelo na final da competição, no próximo dia 10 de julho.

Você pode me encontrar também no twitter (@rodolfo1975) ou no Instagram (futebol_em_numeros)