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

Corinthians

Robert Renan vence concorrência interna e se destaca na zaga do Corinthians

Robert Renan ganha espaço no elenco do Corinthians - Rodrigo Coca/ Ag. Corinthians
Robert Renan ganha espaço no elenco do Corinthians Imagem: Rodrigo Coca/ Ag. Corinthians

Colaboração para o UOL, em São Paulo

31/10/2022 04h00

Até agosto, Robert Renan ainda disputava alguns jogos com o time sub-20 do Corinthians. Ele era tido apenas como a sexta opção para a zaga e, por isso, descia para ajudar a base. Mas, recentemente, superou seus companheiros de posição e vem buscando seu espaço entre os titulares do Alvinegro nesta reta final do Campeonato Brasileiro.

Mesmo sem ainda figurar entre as peças do elenco no site do próprio clube, o defensor foi titular em dois dos três últimos jogos da equipe. Tanto na vitória por 1 a 0 contra o Santos, na Vila, quanto no empate sem gols diante do Goiás, na Serrinha, o atleta atuou os 90 minutos e ajudou o Alvinegro a sair de campo sem ser vazado em ambas as ocasiões. Ele ficou no banco apenas na derrota por 2 a 0 para o Fluminense.

Com atuações sólidas que aliam um bom posicionamento a uma antecipação precisa, o jogador foi um destaques do confronto do embate do último sábado (29), diante do Esmeraldino. Ele foi peça chave para parar Pedro Raul, que é o vice-artilheiro do torneio com 18 gols.

Segundo os dados do Sofascore, ele venceu todos os sete duelos que disputou no embate contra o Goiás e ainda acertou 52 dos 58 es que realizou. Foram oito cortes, quatro desarmes, três interceptações e um chute bloqueado.

Subida no elenco

Para conquistar um espaço, o jovem atleta de apenas 19 anos precisou superar muitos companheiros dentro do próprio time para virar a dupla de Gil na defesa. Em teoria, Balbuena seria o titular da posição. No entanto, o paraguaio vem sofrendo com excesso de jogos e, por isso, está sendo preservado pelo departamento médico.

Bruno Méndez, que voltou de empréstimo junto ao Internacional em junho, vem sendo mais utilizado na lateral direita do que no miolo defensivo. Diante do Goiás, ele também foi titular, exercendo justamente esta função.

Robson Bambu chegou ao Timão em janeiro para ser, ao menos, um reserva imediato, porém nunca conseguiu se firmar. Sem boas atuações, o jogador vem recebendo poucos minutos e não deve permanecer na equipe para a próxima temporada.

Por fim, Robert Renan ainda venceu a disputa com outro jogador formado no Parque São Jorge. Raul Gustavo foi muito utilizado até o meio do ano, mas não entrou em campo nos últimos seis jogos realizados pelo Alvinegro.

A disputa interna realça a força que o clube tem nesse quesito, sendo a terceira melhor defesa de todo campeonato com 32 gols sofridos, ao lado de Flamengo, e ficando atrás somente de Palmeiras (22) e Internacional (30)

Corinthians