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

Flamengo

Fla sofre com apagões e cansaço, mas time cumpre dever sem seus astros

Leo Burlá

Do UOL, no Rio de Janeiro

02/07/2021 04h00

A vitória por 2 a 0 sobre o Cuiabá foi muito festejada pelos três pontinhos, mas o sufoco na Arena Pantanal deixa evidente alguns problemas recorrentes no Flamengo.

Um fantasma que vem rondando a equipe de Rogério Ceni, a oscilação entre o primeiro e o segundo tempo voltou a assustar. Após dominar amplamente o rival na etapa inicial, o time voltou mais desligado, se retraiu e viu a vitória em risco.

Em jogos recentes contra Unión La Calera (CHI), Vélez Sarsfield (ARG) e Fortaleza, o time já quase pagou caro pelos apagões, mas conseguiu se salvar no fim das contas. O problema, no entanto, aflige a comissão técnica.

Essa mudança brusca se explica por alguns pontos: a intensidade que a equipe coloca no início das partidas cobra um preço físico caro. Em meio aos desfalques causados pela Copa América, o Rubro-negro, que não conta com Isla, Arrascaeta, Everton Ribeiro e Gabigol, não encanta como em outros tempos, mas vai somando pontos que poderão ser decisivos na campanha pelo tricampeonato. Com os astros da companhia longe da Gávea, ar ileso por esse momento de dificuldade é chave para a briga pelo título.

"O papel da fisiologia é importante, tanto é que hoje o Diego Alves não veio para o jogo, pois constatou-se um risco de ter uma lesão. Você não pode ter recursos e não utilizá-los", disse Ceni.

Na Arena Pantanal, o técnico ganhou uma nova dor de cabeça para os próximos dias. Com entorse no joelho, Diego deixou o campo com expressão de dor e dificilmente estará apto para atuar na próxima rodada.

Caso o capitão seja de fato vetado, o treinador terá de mexer em um setor ainda mais sensível desde que Gerson deixou o clube. Em Cuiabá, João Gomes jogou bem, porém foi substituído. De volta ao time após sete meses de recuperação de uma cirurgia no joelho, Thiago Maia marcou o gol da vitória e foi a grande notícia da noite.

"Era para o Diego sair por volta dos 15 minutos do segundo tempo. Muito provavelmente ele não começaria o próximo jogo contra o Fluminense. Foi uma pena ele ter tomado uma pancada", lamentou o Ceni.

Apesar da jornada feliz do novo dono da camisa 8, o comandante terá de optar por uma formação que pouco jogou junta. Caso não se sinta seguro, Willian Arão poderia retomar sua posição de origem.

Na próxima rodada, o Fla encara o rival Fluminense, domingo, 16h, na Neo Química Arena. Ainda mutilado pelo calendário, os rubro-negros terão um desafio redobrado para seguirem mirando o topo da tabela.

Flamengo