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

Julio Gomes

Simeone é o grande vilão da eliminação do Atlético para o RB Leipzig

João Félix comemora gol marcado pelo Atlético contra o Leipzig, na Liga dos Campeões - Julian Finney - UEFA
João Félix comemora gol marcado pelo Atlético contra o Leipzig, na Liga dos Campeões Imagem: Julian Finney - UEFA

13/08/2020 18h00

Receba os novos posts desta coluna no seu e-mail

Email inválido

Não há como não apontar o dedo para Diego Simeone. O técnico mais bem pago do mundo não pode simplesmente prescindir de um jogador como João Félix e colocar seu time para jogar uma eliminatória única de Liga dos Campeões da Europa como se fosse uma eliminatória a dois jogos.

Não havia espaço para especulação. O RB Leipzig, com os 2 a 1 no José Alvalade, será o adversário do Paris Saint-Germain na semifinal de terça-feira, em Lisboa - ótima notícia para Neymar, Mbappé e companhia, convenhamos.

O Leipzig é um bom time de futebol, taticamente comprometido e que sabe bem o que quer: jogar em velocidade, como no lance do segundo gol, aos 43min do segundo tempo. Foi um jogo equilibrado, em que o time alemão abusou das faltas e aproveitou os pontos fracos do Atlético.

Um Atlético que segue com a sina de Robin Hood. Elimina o Liverpool, campeão de tudo, para cair diante de um clube novato na Champions. Na Liga espanhola, é a mesma coisa: não consegue disputar o título porque vai deixando pontos pelo caminho contra times pequenos.

O grande pecado de Simeone foi deixar João Félix no banco. A maior contratação da história do clube. Por mais instável que tenha sido a temporada do jovem português e por mais que ele não tenha a mesma intensidade tática do resto do time, não era possível deixá-lo de fora. O Atlético é um time incrível taticamente, as transições e recomposições são perfeitas, mas falta um jogador anárquico para criar jogo, para fazer algo acontecer no ataque.

No primeiro tempo, o Atlético jogou somente pela esquerda, com Renan Lodi e Carrasco, o que facilitou a marcação do Leipzig. No segundo tempo, o time alemão fez o gol logo no início e o Atlético teve de correr atrás. Quando Félix entrou, o jogo mudou. O Atlético a a ser o melhor time em campo, chega ao empate (pênalti sofrido e convertido pelo português) e dá a impressão de estar perto da virada.

Poderia ter ido para cá ou para lá. Uma prorrogação até teria sido o mais justo e lógico. Mas, em uma bola viva no meio de campo, um único erro de recomposição acaba no segundo gol dos alemães, que estavam perdidos em campo naquele momento.

Simeone, temos uma notícia para você: Não há partida de volta desta vez.