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

Liga dos Campeões - 2020/2021

Ter Stegen salva, e Barcelona sofre para vencer o Dínamo pela Champions

Messi celebra gol do Barcelona contra o Dínamo de Kiev -  Pedro Salado/Getty Images
Messi celebra gol do Barcelona contra o Dínamo de Kiev Imagem: Pedro Salado/Getty Images

Do UOL, em São Paulo

04/11/2020 18h49

O Barcelona precisou de apenas 5 minutos de jogo para abrir o placar contra o Dínamo de Kiev, no Camp Nou, pela terceira rodada da Liga dos Campeões. Com gols de Messi, de pênalti, e Piqué, os espanhóis venceram por 2 a 1. Tsygankov diminuiu para os ucranianos.

Apesar da vitória, Ter Stegen foi o melhor em campo contra um time que estava desfalcado de 13 jogadores do elenco principal por conta da covid-19.

Com 9 pontos e 100% de aproveitamento, o Barça é o líder do Grupo G e pode se classificar já na próxima rodada. A Juventus aparece em 2º com 6 pontos. Ferencváros e Dínamo de Kiev têm 1 ponto.

Antes de jogar pela Liga dos Campeões novamente, o Barcelona tem o Betis em casa e o Atlético de Madri fora de casa pelo Campeonato Espanhol. Os catalães estão em 12º lugar, com 8 pontos e não vencem há quatro jogos. Na rodada ada, a equipe empatou com o Alavés, por 1 a 1.

O gol saiu após Ansu Fati dominar de costas para a zaga, tocar para Messi e o argentino ser atropelado. Pênalti. O craque cobrou com força no canto esquerdo e abriu o placar.

Dois minutos depois do gol, Ansu Fati finalizou cruzado de perna esquerda, Neshcheret deu rebote e Griezmann, na pequena área, chutou para fora.

O Dínamo chegou com perigo com Buyalskyi. Tsyankov achou Kedziora no flanco direito, ele chegou na linha de fundo, cruzou na marca do pênalti para Buyalskyi cabecear firme, mas Ter Stegen espalmou no contrapé.

No começo do segundo tempo, o Dínamo chegou a empatar, mas o árbitro marcou saída de bola em cobrança de escanteio. Tsyankov cobrou escanteio pelo lado esquerdo e Kedziora, de cabeça, mandou para o gol. Porém, o assistente marcou saída de bola. O VAR checou e manteve a decisão de anular o lance.

O Dínamo insistiu e Ter Stegen salvou o Barça. Buyalski roubou a bola de Messi no campo de defesa, tocou para Gerson Fernandes, que puxou contragolpe, deixou Supryaha na cara do gol e o goleiro do Barça fez mais um milagre.

O Barcelona acordou aos 12 minutos do segundo tempo. Messi cobrou falta no ângulo direito e Neshcheret se esticou todo para espalmar.
Mas pouco depois, Piqué ampliou. Ansu Fati recebeu de De Jong, fez levantamento perfeito pelo lado esquerdo e Piqué testou no cantinho para ampliar.

Do outro lado, Ter Stegen seguia salvando o Barcelona. Buyalskyi fez lançamento perfeito para Tsyankov, que ele saiu na cara do gol e bateu no canto esquerdo, mas Ter Stegen salvou mais uma vez.

O Dínamo chegava com certa facilidade e dessa vez Ter Stegen não conseguiu evitar o gol. Shabanov avançou pelo lado esquerdo, fez cruzamento rasteiro e Verbic desviou para defesa de Ter Stegen, mas Tsygankov pegou o rebote e diminuiu.

Os ucranianos chegaram a esboçar uma pressão no fim do jogo, mas o Barcelona conseguiu segurar o resultado.