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

OPINIÃO

RMP: 'Titulares do Fla precisam ganhar ritmo para vencer Galo na Supercopa'

Do UOL, em São Paulo

29/01/2022 22h33

A experiência de usar um time formado por garotos no início do Carioca durou apenas duas partidas. Após a vitória sobre a Portuguesa (2 a 1) e o empate de hoje contra o Volta Redonda (0 a 0), os garotos do Flamengo cedem espaço aos titulares, que devem estar em campo nesta quarta-feira (2) no duelo contra o Resende. A previsão de retorno era na partida seguinte, no clássico contra o Fluminense.

Na Live do Flamengo, programa do UOL Esporte logo após as partidas do Mengão, os jornalistas Renato Maurício Prado e André Rocha comentaram sobre a estratégia da equipe em antecipar o retorno de seus titulares - exceto aqueles que estão a serviço de suas seleções nas eliminatórias sul-americanas da Copa do Mundo-2022.

  • De segunda a sexta, às 17h, o Canal UOL traz, ao vivo, as últimas informações do mercado da bola. Inscreva-se no YouTube de UOL Esporte e confira também as lives dos clubes, Posse de Bola e UOL News Esporte:

"Acho ótimo o Flamengo usar os titulares agora, não por causa do Carioca. O time titular tem que começar a jogar se ele quiser fazer uma boa Supercopa do Brasil. Hoje, o Atlético-MG botou uma porção de gente para jogar. Jogaram Hulk, Nacho, metade do time titular [vitória por 3 a 0 sobre o Tombense]. Claro, não é para jogar direto, mas tem que dar ritmo para essa turma, se der importância para essa Supercopa", disse Renato. A Supercopa do Brasil será disputada em 20 de fevereiro.

Apesar de aprovar o retorno dos titulares, Renato demonstrou curiosidade pela formação do Flamengo sob o comando de Paulo Sousa. O colunista do UOL, porém, evitou apontar uma provável formação da equipe para o duelo contra o Boavista.

"Diante das últimas coisas que estão acontecendo, a entrevista do Paulo Sousa e a contratação do Marinho, resolvi esperar para ver. Não consigo mais arriscar o time que ele vai jogar. Teremos ainda outra coisa: a decisão de botar os titulares no próximo jogo e o próprio Paulo Sousa dirigir. Sem Everton Ribeiro, Arrascaeta, Gabigol e Isla, o que poderemos ver é o desenho tático", disse.

E meio à incógnita sobre a montagem da equipe, Renato espera por algumas surpresas do treinador português. "O que a gente mais ou imaginava não está batendo com as contratações. O próprio Cebolinha: ele vai jogar de ala? Quero ver quando o Paulo Sousa botar em campo. Aí poderemos tirar algumas conclusões. Por enquanto, só estamos especulando em cima do que ele fez nos outros clubes, mas com os jogadores que ele tem na mão agora, esse quebra-cabeça não encaixa muito. Ou ele vai adaptar ou vai nos surpreender com algumas escalações inesperadas", concluiu o colunista do UOL.

Não perca! A próxima edição da Live do Flamengo será na quarta-feira (2), logo após a partida contra o Boavista pelo Carioca. Você pode acompanhar o programa pelo Canal UOL, no app Placar UOL, na página do Flamengo no UOL Esporte e no canal do UOL Esporte no Youtube.