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

Baixas fazem Ceni repetir time e Fla liga alerta contra desgaste sem astros

Filipe Luís e Diego têm jogado com muita regularidade em tempos de Flamengo desfalcado - Alexandre Vidal/Flamengo
Filipe Luís e Diego têm jogado com muita regularidade em tempos de Flamengo desfalcado Imagem: Alexandre Vidal/Flamengo

Leo Burlá

Do UOL, no Rio de Janeiro

25/06/2021 04h00

As perdas de Isla, Arrascaeta, Gabigol e Everton Ribeiro para seleções que disputam a Copa América e o adeus de Gerson criaram um problema não só para Rogério Ceni, mas também para o departamento médico do Flamengo.

Desde que o Rubro-negro perdeu os astros que estão na disputa do torneio continental, o Fla se vê com poucas alternativas e impõe uma grande carga para alguns dos poucos atletas disponíveis no momento. Diante do quadro, entram em cena profissionais da área de saúde do clube, que tornam-se ainda mais importantes em um momento em que a recuperação é ainda mais fundamental.

Neste intervalo, que compreende cinco partidas, Diego Alves, Matheuzinho, Willian Arão, Vitinho e Bruno Henrique foram lançados desde o início em todos eles. Filipe Luís, Rodrigo Caio, Michael e Rodrigo Muniz, por sua vez, começaram jogando quatro vezes, o que ajuda a dimensionar as dificuldades para a montagem da equipe. Em dois desses compromissos, os times foram idênticos. Nos outros, as mexidas não aram de (no máximo) duas peças.

"As alternativas são pequenas para fazer as trocas. Nós não temos muitas alternativas sem Gabriel, Arrascaeta e Éverton Ribeiro para fazer trocas. Os jogadores estão se sacrificando muito, começam praticamente os mesmos jogadores.", itiu o treinador.

Ocorre que o desafio ainda está longe de acabar. Até que alguns dos principais nomes do elenco voltem, os rubro-negros ainda têm ao menos mais quatro jogos. Com o caixa mais folgado, a cúpula do futebol corre atrás de reforços que cheguem para fazer a diferença.

"O clube ou por um período sem poder aquisitivo, amos alguns nomes, estão estudando e tentando. Infelizmente, neste momento em que temos necessidade, não tivemos a condição de trazer mais opções. Precisamos de um ou dois bons jogadores para fazermos um Flamengo competitivo", disse o comandante.

Apesar dos percalços, o Flamengo vai se virando bem e somando momentos de bom futebol nos jogos. Com a vaga nas oitavas da Copa do Brasil confirmada e com três vitórias em quatro jogos do Brasileiro, a equipe se prepara para encarar no domingo (27) o Juventude, às 11h, no Alfredo Jaconi, pelo Brasileirão.

Flamengo