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

Flamengo se resolve com brilho de craques em início avassalador com Renato

Leo Burlá

Do UOL, no Rio de Janeiro

26/07/2021 04h00

Quatro vitórias em quatro jogos, 15 gols marcados e dois sofridos. O início de Renato Gaúcho no Flamengo enlouquece o torcedor e ratifica a credencial da equipe como favorita em todas as frentes.

Na goleada por 5 a 1 contra o São Paulo, no entanto, o treinador experimentou o doce sabor de contar com um elenco recheado de jogadores talentosos e que arrumam soluções em dias complicados. Contra o Tricolor, foi a vez de Bruno Henrique, autor de três gols, colocar a bola debaixo do braço e guiar o time rumo à virada.

Após um primeiro tempo marcado por dificuldades por conta de um nó atado pelos paulistas, o Rubro-Negro contou com o brilho individual do camisa 27 para resolver a parada e ganhar três pontos. Incrivelmente, o resultado elástico veio em uma tarde que não foi das melhores sob o ponto de vista coletivo, mas isso mostra a força de um grupo que não cansa de levantar taças.

"A gente trabalha para isso, mas nunca sabemos se teremos sucesso no início. Tive a vantagem de chegar e já conhecer quase 100% do grupo. O grupo é forte, eles estão acreditando no trabalho. É sempre bom vencer, isso dá tranquilidade. Vamos trazendo nosso torcedor para o nosso lado. Flamengo é Flamengo", disse Renato, que completou:

"Comigo vai ter jogo ofensivo, não gosto de perder nem par ou ímpar. Maior forma de respeitar o adversário é fazer gols e não menosprezar. Nossa virtude é a vontade de vencer, a equipe vem jogando bem junta".

Reforços do banco

Para deixar o Maracanã com os três pontos e um tabu de quatro anos sem vitórias sobre o rival quebrado, o Fla contou de novo com a força do banco de reservas. Assim como ocorreu nos últimos jogos, Michael tem entrado e mostrado seu valor. Com muita força de vontade e correria, o atacante foi importante para a reação e reforçou a fama de Renato de ser um técnico que recupera "renegados".

Com o departamento médico praticamente vazio e sem a sombra das convocações para as Eliminatórias e a Copa América, fatos que complicaram o trabalho de Rogério Ceni, Renato aproveita a onda positiva para melhorar o ambiente e trazer para si o elenco.

"O importante é o treinador dar moral para todos os jogadores. Quando cheguei, o Michael e o Vitinho estavam um pouco desacreditados. Fico feliz deles por eles reencontrarem o futebol deles", analisou o técnico.

Em franca ascensão na temporada, o Fla vira a chave do Brasileiro e volta as atenções para a missão pelo tetra da Copa do Brasil. Na quinta 929), a equipe recebe a visita do ABC, 20h, no Maracanã, pelas oitavas da competição. A tendência é que Renato poupe alguns titulares para o jogo, mas a confiança é que o talento disponível para o confronto seja suficiente.

Flamengo