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

Danilo Lavieri

REPORTAGEM

Texto que relata acontecimentos, baseado em fatos e dados observados ou verificados diretamente pelo jornalista ou obtidos pelo o a fontes jornalísticas reconhecidas e confiáveis.

Tite aposta em Coutinho até hoje por causa de um Brasil x Argentina

Philippe Coutinho e Tite no hotel da seleção brasileira, em São Paulo - Lucas Figueiredo/CBF
Philippe Coutinho e Tite no hotel da seleção brasileira, em São Paulo Imagem: Lucas Figueiredo/CBF

Colunista do UOL

16/11/2021 11h23

Receba os novos posts desta coluna no seu e-mail

Email inválido

Quando o nome de Philippe Coutinho apareceu na lista da seleção brasileira, muita gente não entendeu o motivo. O meio-campista está longe de viver seus melhores momentos, mas tem a confiança de Tite por causa do que já mostrou no ado. E um Brasil x Argentina tem papel fundamental nessa memória.

Curiosamente hoje (16), às 20h30, em novo encontro entre as seleções, o técnico tem a chance de recolocar o meio-campista entre os titulares da amarelinha justamente contra o mesmo adversário que o colocou em um "hall dos inesquecíveis" para a comissão atual.

Há cinco anos, em novembro de 2016, Philipe Coutinho tinha uma apresentação de gala em um 3 a 0 em cima da Argentina no Mineirão, com direito a um golaço que é sua marca registrada: aquele corte da ponta para o meio e um chute no ângulo. Nas Eliminatórias, o meio-campista teve um papel fundamental e virou figurinha carimbada na seleção até o Mundial da Rússia após aquele show particular.

Depois disso, no entanto, o jogador não consegue mais justificar um lugar na seleção. Após a eliminação em 2018, na lista de contestação que foi crescendo sobre o trabalho de Tite, os chamados por Coutinho apesar da péssima fase dele entre Bayern de Munique e Barcelona eram um dos pontos mais críticos.

Em várias coletivas o técnico teve que se explicar pela convocação e sempre usou o potencial mostrado por ele como justificativa. O discurso em suas explicações sempre foi de "ele paga pela expectativa gerada por causa do futebol apresentado por ele mesmo". Até hoje Tite cita "o Coutinho do Liverpool" como um exemplo do que procura para o setor.

Também é importante destacar que o comandante aproveitou o período de lesões de "Couto" para fazer testes e nenhum outro jogador abraçou a chance.

Hoje, Tite não contará com Neymar e pode promover o retorno do meio-campista para articular jogadas. Quem sabe em um novo Brasil x Argentina ele poderá retomar o futebol que tanto encantou a comissão técnica e resolva um dos principais problemas da seleção: a criação.

Siga também as opiniões de Danilo Lavieri no Twitter e no Instagram