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

Lucca brilha em momento certo e é sopro de esperança em Flu sem "matador"

Do UOL, no Rio de Janeiro

11/07/2021 04h00

O Fluminense não pode contar com seus três centroavantes em um dos momentos mais decisivos da temporada. Para o primeiro jogo das oitavas de final da Libertadores, contra o Cerro Porteño, o técnico Roger Machado não contará com Fred, Abel Hernández e Bobadilla, todos lesionados. O desespero tomou conta dos torcedores, mas há um sopro de esperança.

Lucca não vivia grande momento desde que chegou ao Fluminense, em setembro do ano ado. O jogador, no entanto, saiu da escuridão e brilhou no momento certo. Na última partida antes do jogo mais importante da temporada, ele entrou no segundo tempo e marcou os dois gols da vitória tricolor sobre o Sport, na Ilha do Retiro.

Mais que isso. Lucca se mostrou um potencial camisa 9. Ele teve três oportunidades na partida e estufou a rede duas vezes. Na primeira, apareceu como referência e escorou. Em seguida, conseguiu uma bela cabeçada deslocando o goleiro adversário. Na ausência dos "matadores", o Fluminense descobriu um guerreiro adormecido.

"Importante poder ajudar. Isso é bom, confiança que todo mundo bem dando. Vim de um momento ruim, mas temos que estar preparados para quando a oportunidade aparecer. Sei das minhas qualidades, tenho que incomodar sempre os caras [adversários]. Feliz de estar no local certo e na hora certa", explicou Lucca.

"Hoje o Lucca é a única opção que temos para terça como jogador de frente. Diante da necessidade da partida, eu o coloquei. Felizmente os dois gols nos dão muita confiança. Acredito que possa ser um novo momento do Lucca. Foi deslocado para o lado em uma dessas circunstâncias da carreira. Ficamos muito felizes, e sobretudo seus colegas sempre desejaram uma oportunidade para ele. Sempre se dedicou muito estando entre os 11 ou não. Está colhendo o bom momento", declarou Roger.

Fred foi submetido a um exame de ressonância, na última quinta, e teve um edema detectado na musculatura anterior da coxa direita. Desta forma, o camisa 9 não estará à disposição para o duelo com o Cerro Porteño, em Assunção, no Paraguai, na próxima terça-feira, pelo jogo de ida das oitavas da Libertadores.

Já Abel Hernández está com uma inflamação no tendão de Aquiles, local onde já ou por cirurgia. Bobadilla, por sua vez, atravessa momento de transição física após lesão na panturrilha direita. Por fim, o jovem John Kennedy se recupera de grave caso de covid-19 e ainda não voltou a treinar sem restrições.

Fluminense