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

Fluminense

Fluminense vê volta de Fred como solução para dificuldades no ataque

Fred marcou apenas um gol em sua volta ao Fluminense, mas é visto como solução para o ataque - Lucas Merçon/Fluminense FC
Fred marcou apenas um gol em sua volta ao Fluminense, mas é visto como solução para o ataque Imagem: Lucas Merçon/Fluminense FC

Caio Blois

Do UOL, no Rio de Janeiro

22/09/2020 04h00

As dificuldades do Fluminense no ataque se repetem ao o que a perda de Evanílson, vendido ao Porto, virou o grande problema do Tricolor. Sem seu titular, o técnico Odair Hellmann testou opções de falso 9, enquanto Fred ainda não emplacou sequência desde sua volta.

Foram cinco "pausas" na tentativa de readquirir a forma e atuar com constância, mas agora, o ídolo do Flu foi novamente liberado. O centroavante ou pelo protocolo da Confederação Brasileira de Futebol de dez dias úteis assintomático após testar positivo para o novo coronavírus, e provavelmente estará em campo contra o Atlético-GO, quinta-feira (24), às 20h, pelo jogo de volta da quarta fase da Copa do Brasil.

Se conseguiu importante vantagem no jogo de ida, que venceu por 1 a 0 no Maracanã, o Tricolor sabe que não terá vida fácil. A derrota para o Sport, pelo Campeonato Brasileiro, ligou o sinal de alerta para o formato da equipe: sem centroavante e com proposta conservadora, o Fluminense não rende nem perto de seus melhores momentos. Por isso, Odair deve promover mudanças, e o retorno de Fred é esperado.

O problema é que o experiente jogador de 36 anos não treina regularmente com o grupo desde que foi isolado por conta das medidas impostas pela CBF para jogadores que contraíram a Covid-19. Assim, o camisa 9 está sem ritmo e dificilmente ará 90 minutos. A forma de utilização do atacante no jogo ainda será decidida.

Para a partida de quinta-feira, além de Fred, Odair Hellmann terá o retorno de outros desfalques que teve pelo Brasileirão, como Dodi, Michel Araújo e Nenê. Seguem fora Danilo Barcelos (que já atuou pelo Botafogo na competição), Frazan (recuperando-se de artroscopia) e Caio Paulista (lesão na mão direita). Digão e Yuri ainda serão reavaliados, mas provavelmente também seguirão fora.

Com a vitória no jogo de ida, o Tricolor precisa apenas do empate no Estádio Olímpico de Goiânia para se classificar às oitavas de final da Copa do Brasil. Não há mais gol fora de casa como critério de desempate na competição, portanto qualquer vitória simples do adversário leva o jogo para os pênaltis, e vitórias por dois ou mais gols de diferença classificam o Atlético-GO.

Fluminense