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

Flu tem aproveitamento de luta pelo G6 com Muriel no gol

Muriel, goleiro do Fluminense, durante partida contra o Bahia no estádio do Maracanã pelo Campeonato Brasileiro - Thiago Ribeiro/AGIF
Muriel, goleiro do Fluminense, durante partida contra o Bahia no estádio do Maracanã pelo Campeonato Brasileiro Imagem: Thiago Ribeiro/AGIF

Caio Blois

Do UOL, no Rio de Janeiro

14/10/2019 04h00

A boa fase do Fluminense no Campeonato Brasileiro tem diversos personagens. Um deles é o goleiro Muriel. Desde que chegou, disputou 14 jogos pela competição nacional, diminuindo a média de gols sofridos e ajudando a melhorar o aproveitamento da equipe, que se afasta da zona de rebaixamento após sequência invicta de cinco partidas.

Com o goleiro em campo, o Fluminense tem 47,6% de aproveitamento no Brasileirão, bem próximo ao do Goiás, nono colocado da competição, com 36 pontos. São seis vitórias, dois empates e seis derrotas. Além disso, sofre bem menos gols: se antes eram 1,72 gol por jogo, em comparação com sua média de 1,07, que fez a defesa saltar da inglória 19ª para a 14ª posição entre as mais vazadas. Sem ele (Agenor e Rodolfo também agarraram pelo Tricolor em 2019), a queda é brusca: 27,3% de aproveitamento, com apenas duas vitórias, três empates e seis derrotas, média de pontos parecida com a do Cruzeiro, 18º colocado, com 21 pontos.

"O Muriel está vivendo um momento muito bom. É uma pessoa maravilhosa, de grupo, leva nossa equipe para cima. E profissionalmente ter um cara forte e seguro e muito bem preparado lá atrás nos dá uma tranquilidade muito grande", elogiou o técnico Marcão.

Nos últimos três jogos, o goleiro não sofreu gols, o que não acontecia no Brasileirão desde 2016, com Diego Cavalieri. Do antecessor, "Muroel", como vem sendo chamado, também herdou a música da torcida. Apesar do pouco tempo do clube, ele já ouve no Maracanã gritos de "melhor goleiro do Brasil".

Muriel sofreu apenas 15 gols no Campeonato Brasileiro até aqui, com média expressiva de 1,7 defesas difíceis por jogo, o que o torna líder da estatística na competição. "Fico feliz com o reconhecimento do torcedor. Fui muito bem recebido pela torcida. Antes mesmo de jogar, recebi mensagens de carinho nas redes sociais. No clube também cheguei acolhido pela direção, pelo elenco e pela comissão técnica. A gente está vivendo um bom momento e fico feliz demais de ajudar", declarou, após a vitória sobre o Bahia.

Fluminense