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

Pivô de polêmica, E. Ribeiro pode aproveitar má-fase de Coutinho na seleção

Everton Ribeiro durante partida contra o Peru - Lucas Figueiredo/CBF
Everton Ribeiro durante partida contra o Peru Imagem: Lucas Figueiredo/CBF

Gabriel Carneiro e Pedro Lopes

Do UOL, em São Paulo

12/11/2020 04h00

Everton Ribeiro foi um dos pivôs da polêmica na semana ada envolvendo Flamengo e seleção brasileira. Convocado para os jogos de sexta, diante da Venezuela, e da próxima terça, diante do Uruguai, o meia desfalcou o Rubro-Negro no confronto de ontem contra o São Paulo, pela Copa do Brasil. Se, para o Fla, Everton fez falta, para o próprio jogador toda a discussão pode ter um lado positivo: Tite indicou no treinamento de ontem que ele deve ser titular.

Everton treinou na função de Coutinho, como principal articulador no meio de campo, mais centralizado. Tite escalou um meio de campo formado por Allan, Douglas Luiz e Everton. No ataque, Firmino atuou mais pela esquerda, Gabriel Jesus pela direita e Richarlison centralizado.

O técnico brasileiro costuma, entretanto, promover trocas posicionais durante as partidas: assim como acontecia com Coutinho, Everton pode alternar com o trio ofensivo da seleção e aparecer, durante parte dos confrontos, nos lados do campo.

Everton tem tido seus melhores momentos no Flamengo atuando pela direita do ataque, trazendo a bola para dentro no pé esquerdo. O meia, entretanto, se sente a vontade para atuar também pela esquerda ou mais centralizado, como quer Tite.

"Eu conversei com o Tite, o que ele quer é que eu seja um armador, como no Flamengo. Devo jogar mais por dentro. Não sei se posso falar muito aqui porque tem técnico que não gosta que a gente fale muito de tática. Mas ele quer que eu clareie as jogadas. Independentemente de ser pela esquerda, por dentro ou pela direita, o Tite quer que eu articule as jogadas", afirmou, em outubro, convocado para os jogos contra Bolívia e Peru.

A oportunidade para Everton Ribeiro acontece em um momento que pode não se repetir: Coutinho, titular da posição e homem de confiança de Tite está lesionado e em uma longa fase de oscilações desde que trocou o Liverpool pelo Barcelona, sem conseguir encontrar a regularidade nem com a camisa dos clubes que defendeu.

Em outubro, o meia do Barça chegou a fazer uma grande partida na goleada por 5 a 0 sobre a Bolívia, mas depois teve atuação apagada na vitória por 4 a 2 sobre o Peru. Foi substituído aos 24 minutos da segunda etapa, justamente por Everton Ribeiro, que entrou bem no confronto. Dias depois, o preparador físico Fabio Mahseredjian esclareceu que Coutinho tinha sofrido com problemas intestinais antes do jogo.

Outro potencial concorrente, Paquetá, também não encontrou o seu melhor futebol desde que se transferiu para Europa. Pelo Milan teve oportunidades limitadas na reta final da temporada no primeiro semestre, antes de transferir para o Lyon. Na França, ainda não conseguiu se firmar como titular.

Apesar da confiança de Tite em Coutinho, Everton terá na sexta-feira uma oportunidade que pode não se repetir para mostrar ao treinador que pode ser o principal articulador da seleção e justificar toda a polêmica em torno de sua convocação. O Brasil encara a Venezuela às 21h30, no Morumbi.