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

Jornais destacam "colapso" da Roma em 6 a 2: "Será preciso um milagre"

Cavani brilha e marca duas vezes na vitória do Manchester United contra a Roma na Liga Europa - Paul ELLIS / AFP
Cavani brilha e marca duas vezes na vitória do Manchester United contra a Roma na Liga Europa Imagem: Paul ELLIS / AFP

Colaboração para o UOL, em São Paulo (SP)

29/04/2021 19h13

O jornal italiano Corriere dello Sport foi duro nas críticas à Roma após a derrota de hoje (29) por 6 a 2 para o Manchester United no jogo de ida das semifinais da Liga Europa, afirmando que "será preciso um milagre no Olímpico" para os italianos chegarem nas finais da competição.

A publicação até ressalta que a Roma "jogou o primeiro tempo com o coração", mas também considera que o Manchester United "extinguiu os sonhos europeus antes mesmo de jogar a volta no Olímpico (estádio usado pela Roma)".

Já o jornal Tuttosport preferiu classificar a Roma como em um dia "azarado", já que nos primeiros 37 minutos de jogo, três jogadores precisaram ser substituídos por conta de lesões, sendo eles: Veretout, o goleiro Pau López e também Spinazzola.

Além disso, o jornal destacou que o primeiro tempo terminou com a Roma vencendo o Manchester United por 2 a 1 de virada, mas na segunda etapa, a equipe italiana teve um "colapso" e cedeu cinco gols aos donos da casa.

Por fim, o também italiano, Gazzetta dello Sport chamou o segundo tempo da Roma de "perturbador", mas fez questão de lembrar de uma virada história do clube "Agora, em uma semana, precisamos de uma remontada ao estilo de Barcelona. Na verdade, mais, porque desta vez serão necessários quatro gols em vez de três" lembrando quando a Roma perdeu de 4 a 1 do Barcelona em 2018 em um jogo de ida da Champions League e se classificou na partida de volta com um 3 a 0.

A Roma vai receber o Manchester United no jogo de volta das semifinais da Europa League na próxima quinta-feira (06/05) no Estádio Olímpico de Roma precisando vencer por quatro gols de diferença para chegar nas finais da Europa League.