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

OPINIÃO

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

Seleção vai à Inglaterra para ver Vini e Jesus inspirados, mas Militão mal

Colunista do UOL

26/04/2022 17h53

Receba os novos posts desta coluna no seu e-mail

Email inválido

O show de bola entre Manchester City e Real Madrid hoje (26) pela semifinal da Liga dos Campeões foi presenciado de perto por Matheus Bacchi e Cléber Xavier. Os dois auxiliares de Tite foram assistir ao jogo in loco e deixam o estádio com observações importantes na vitória dos ingleses por 4 a 3.

Gabriel Jesus foi o que mais chamou atenção no começo da partida. Não só pelo gol, mas também por atuar em diferentes funções do ataque quando o City precisava. Majoritariamente centralizado, o atacante também abriu pela direita para dar espaço aos seus companheiros e construir jogadas e até pela esquerda, onde chegou a quase deixar Éder Militão no chão.

Nitidamente confiante depois de ter feito quatro gols no fim de semana, ele ainda sofreu outras faltas e foi importante para ajudar no primeiro abafa quando o time de Guardiola perdia a bola. Fora da última convocação por estar voltando de lesão e não estar em 100% da sua capacidade física, ele deixa um recado a Tite que quer muito uma vaga no Qatar, apesar do jejum de gols na seleção.

Como já estamos acostumados a ver, o técnico costuma ter carinho por quem já foi importante para ele em algum momento desses anos de seleção brasileira. E Jesus foi figura fundamental na recuperação do time nas Eliminatórias tão logo Tite assumiu o cargo.

Quando o Real Madrid parecia assustado com a pressão do City, Vinicius Junior fez em uma jogada o que poucos no mundo conseguem fazer atualmente. Com um drible de corpo, deixou Fernandinho sem saber onde estava a bola e depois disparou em velocidade impressionante para diminuir o placar. Não foi a melhor partida do brasileiro recentemente, assim como de seu companheiro Rodrygo, mas foi importante para mostrar como a revelação flamenguista consegue aparecer em jogos com este peso e com uma característica que pode ser decisiva em jogos apertados.

Quem não teve uma apresentação tão inspirada foi Éder Militão. Além de ter sofrido com Gabriel Jesus, também teve muita dificuldade para marcar Mahrez. Chegou até a mostrar insegurança em alguns lances, coisa que não é comum do zagueiro. Até pela concorrência, no entanto, é bem provável que a atuação ruim seja algo isolado na avaliação final que vai decidir quem vai para a Copa.

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