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

Juventus

Villarreal marca três gols no fim, vence Juventus e avança na Champions

Gerard Moreno comemora gol do Villarral marcado sobre a Juventus nas oitavas de final da Liga dos Campeões - Marco BERTORELLO/AFP
Gerard Moreno comemora gol do Villarral marcado sobre a Juventus nas oitavas de final da Liga dos Campeões Imagem: Marco BERTORELLO/AFP

Do UOL, no Rio de Janeiro

16/03/2022 18h52

O Villarreal venceu a Juventus por 3 a 0 e está nas quartas de final da Liga dos Campeões. Após empatarem por 1 a 1 no jogo de ida, os espanhóis bateram os italianos hoje (16), no Juventus Stadium, e avançaram na maior competição de clubes da Europa.

Os gols da partida foram marcados por Gerard Moreno, de pênalti, assinalado com auxílio do VAR, Pau Torres e Danjuma, todos já no fim: 32min, 39min e 46min do segundo tempo, respectivamente.

Os donos da casa iniciaram o duelo fazendo pressão em busca do gol. A principal arma do time no primeiro tempo foi Vlahovic, que fez valer sua presença de área para criar as melhores chances de gol da Juventus, que tinha Morata na dupla de ataque. O sérvio parou no goleiro Rulli, aos 19min, e acertou o travessão, aos 21min.

Até então os italianos eram soberanos na partida, mas o lance serviu para acordar os espanhóis. O Villarreal ou a se lançar ao ataque, mesmo que de forma contida, e levar perigo ao gol de Szczesny, que tirou com os olhos chute de Lo Celso no lance seguinte. Aurier, aos 30min, também assustou os donos da casa em chute pela direita.

O grande duelo da etapa inicial foi mesmo entre Vlahovic e Rulli. O goleiro já havia parado o centroavante e contado com a sorte em finalização na trave voltou a evitar gol do sérvio aos 34min. Ele cresceu e defendeu cabeceio que tinha endereço.

Na volta do intervalo, a Juventus seguiu em busca do primeiro gol. Rulli seguia inspirado e evitava que os italianos conseguissem finalmente a vantagem que tanto buscavam. Cuadrado cresceu na partida e ou a ser peça importante no ataque dos donos da casa, assim como Rabiot.

Aos 30min do segundo tempo, em praticamente sua primeira chegada ao ataque, o Villarreal teve a bola que buscou o jogo todo. Coquelin foi derrubado por Rugani dentro da área e o pênalti só foi marcado com o auxílio do VAR. Gerard Moreno, que havia entrado poucos minutos antes, cobrou com categoria para abrir o placar: 1 a 0.

A Juventus tinha pouco mais de 10 minutos para buscar a recuperação e evitar eliminação dentro de casa. Os italianos se lançaram ao ataque e isso foi fatal. Só que ao contrário. Frio, o Villarreal esperou nova oportunidade para matar o duelo, o que aconteceu aos 39min: Parejo cobriu escanteio, Aurier desviou, e Pau Torres apareceu dentro da pequena área para completar: 2 a 0.

Nocauteado, a Juventus ainda tomou o golpe final nos acréscimos. Em rápido contra-ataque, Moreno rolou para Danjuma finalizar nos braços de De Ligt. O nigeriano, que defende a seleção holandesa, cobrou com categoria e deu números finais ao confronto: 3 a 0.

Juventus