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

Rodolfo Rodrigues

OPINIÃO

Texto em que o autor apresenta e defende suas ideias e opiniões, a partir da interpretação de fatos e dados.

Rodolfo Rodrigues: Destaque do Flu, Fábio alcança recorde na Libertadores

Jogadores do Fluminense comemoram gol de David Braz contra o Millonarios, pela Copa Libertadores - Mailson Santana/Fluminense FC
Jogadores do Fluminense comemoram gol de David Braz contra o Millonarios, pela Copa Libertadores Imagem: Mailson Santana/Fluminense FC

Colunista do UOL

22/02/2022 23h47

O Fluminense venceu o Millonarios, da Colômbia, em Bogotá, por 2 x 1, de virada, no jogo de ida da Segunda Fase da Copa Libertadores de 2022 nesta terça-feira (24). A estreia do Tricolor carioca na competição foi tensa, depois que o time sofreu um gol de Sosa logo aos 7 minutos de jogo. Pouco depois, com a expulsão do próprio Sosa, aos 19 minutos do 1º tempo, a situação se reverteu e o Flu conseguiu virar o jogo com gol de David Braz, aos 43 minutos da primeira etapa, e Cano, aos 32 do 2º tempo.

O goleiro Fábio, aos 5 minutos do segundo tempo, ainda defendeu um pênalti cobrado por Silva, ajudando diretamente na importante vitória do Flu, que vai jogar pelo empate, no jogo de volta, no Rio de Janeiro. Aos 41 anos, o goleiro alcançou uma marca importante pela Libertadores na noite desta terça. Ao entrar em campo pelo Flu, Fábio disputou sua 10º edição de Libertadores, igulando a marca de outros dois brasileiros, então recordistas com mais participações na história da competição, desde 1960: o ex-meia Danilo e o ex-volante Jean, que inclusive já atuou pelo Fluminense.

  • Veja análises e últimas notícias do futebol no UOL News Esporte com José Trajano, Julio Gomes e Domitila Becker:

Brasileiros que mais disputaram a Libertadores (1960-2022):
10 - Danilo (meai)
[10] - Fábio (goleiro)
10 - Jean (volante)
9 - Fábio Santos (lateral esqurdo)
9 - Henrique (volante)
9 - Leonardo Silva (volante)
9 - Manga (goleiro)
9 - Marcos Rocha (lateral direito)
9 - Pará (lateral direito)
9 - Réver (zagueiro)
9 - Rogério Ceni (goleiro)

Pela Libertadores, Fábio chegou hoje ao seu 84º jogo na competição. Segundo brasileiro com mais jogos na história do torneio, Fábio está agora a 6 jogos de igualar o recordista Rogério Ceni. Caso o Fluminense avance para a fase de grupos, Fábio terá a chance de quebrar esse recorde. Vale lembrar que o goleiro já é o recordista de jogos na história do Brasileirão e da Copa do Brasil.

Brasileiros com mais jogos na Libertadores (1960-2022):
90 Rogério Ceni
[84] Fábio
82 Danilo
81 Henrique
73 Leonardo Silva
73 Manga
69 Roger Machado
68 Kléber (le)
68 Marcos Rocha
68 Victor
66 Fábio Santos
65 Réver
63 Pará
[62] Willian
61 Weverton
60 Júnior (Copa 2002)

Siga Rodolfo Rodrigues no Instagram

Siga Rodolfo Rodrigues no Twitter