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

André Rocha

ANÁLISE

Texto baseado no relato de acontecimentos, mas contextualizado a partir do conhecimento do jornalista sobre o tema; pode incluir interpretações do jornalista sobre os fatos.

Vinícius Júnior é o escape do Real Madrid que preocupa Jürgen Klopp

Vinicius Junior agradece assistência de Kroos em jogo contra o Liverpool  - REUTERS/Susana Vera
Vinicius Junior agradece assistência de Kroos em jogo contra o Liverpool Imagem: REUTERS/Susana Vera

Colunista do UOL Esporte

14/04/2021 04h00

"Fiquei impressionado, mas não surpreso. Ele tem um talento incrível, mas já sabíamos disso, antes mesmo de chegar ao Real, onde obviamente melhorou".

Palavras de Jürgen Klopp, treinador do Liverpool, sobre a atuação de Vinícius Júnior nos 3 a 1 do Real Madrid sobre os Reds no Estádio Alfredo Di Stéfano, pela ida das quartas de final da Liga dos Campeões.

E foi mesmo impressionante. Segundo o Whoscored.com, o jovem atacante brasileiro finalizou quatro vezes, duas no alvo. Nas redes de Alisson. O primeiro de forma espetacular, recebendo lançamento primoroso de Toni Kroos, infiltrando da esquerda para dentro e, enfim, sendo preciso na finalização. Justo o que faltava e se repetiu no segundo tempo. Aos 20 anos, desequilibrando em um jogo enorme do principal torneio de clubes do planeta.

Não é pouco. E pode ser ainda mais pelo contexto da partida de volta, em Anfield. O Liverpool vai precisar atacar, adiantar as linhas e se expor. Um convite para Vinicius Júnior, o grande escape do time merengue. A referência de velocidade, seja atacando os espaços às costas da defesa recebendo o e longo ou conduzindo com habilidade e cada vez mais clareza. As tomadas de decisão têm melhorado sensivelmente.

O desempenho nos 2 a 1 sobre o Barcelona pela liga espanhola não foi brilhante, mas continuou sendo peça importante. Também porque o camisa 20 ocupa melhor os espaços sem a bola e melhorou a leitura de jogo. Contra o time catalão soube alternar como o ponta que recua para compor pela esquerda uma segunda linha num 5-4-1 e o atacante que se junta a Karim Benzema em um 3-5-2. Justamente para não isolar o centroavante e preocupar a retaguarda adversária.

Zinedine Zidane deve repetir a estratégia, até pela vantagem conquistada e em função dos desfalques. E o brasileiro novamente será peça fundamental. Ajudando a defender e disparando para cima da desfalcada e hesitante defesa de Jürgen Klopp. Por isso o treinador alemão pensa em evitar a conexão do meio-campo com o atacante. "Planos especiais para pará-lo? No primeiro gol eu não tinha. Mas temos que impedir que a bola chegue até ele, isso está claro", explicou Klopp na coletiva pré-jogo.

Se for preciso no acabamento dos ataques de novo, Vinicius Junior pode fazer história colocando o Real Madrid em mais uma semifinal de Champions.