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

São Paulo aproveita Corinthians esburacado e sem intensidade e vai à final

Alisson e Igor Gomes comemoram gol do São Paulo contra o Corinthians - Marcello Zambrana/AGIF
Alisson e Igor Gomes comemoram gol do São Paulo contra o Corinthians Imagem: Marcello Zambrana/AGIF

Colunista do UOL

27/03/2022 18h01

Receba os novos posts desta coluna no seu e-mail

Email inválido

O São Paulo soube aproveitar a falta de intensidade e marcação do Corinthians e está na final do Paulistão contra o Palmeiras. Claro que há méritos em explorar esses espaços deixados pelos comandados de Vitor Pereira, mas a verdade é que o Alvinegro está longe de ter um time competitivo apesar dos nomes de peso que agora tem no elenco. Muito além da idade, também há questão de como ocupar os espaços quando o time está sem a bola e de como encaixar a marcação.

Nos 2 a 1 de hoje (27) no Morumbi, o jogo começou bem morno, com poucas trocas de es e jogadas que dessem trabalho aos dois goleiros. O Corinthians tentou surpreender deslocando Renato Augusto para os lados e às vezes até para mais perto da área, mas não adiantou muita coisa. Giuliano poderia dar mais volume de jogo, mas muito menos velocidade e intensidade especialmente na hora que o time estava sem a bola. Paulinho tocou pouco na bola, tanto para armar ou para desarmar.

João Victor escalado improvisado na direita por causa do desfalque de Fagner também foi algo que não funcionou tão bem. O jovem não soube apoiar como lateral e deixou Robson Bambu completamente sem confiança no seu lugar. Enquanto isso, os jovens de Cotia com saúde para dar e vender e muito bem instruídos por Rogério Ceni.

Em uma das poucas oportunidades do primeiro tempo, o gol saiu em um retrato de todas as falhas corintianas em campo. Nestor conseguiu achar um e para Wellington, e o são-paulino no meio de quatro marcadores teve tempo o suficiente para dominar, ajeitar o corpo e escolher como iria bater. Não deu outra: a bola foi no ângulo de Cássio.

Com o 1 a 0 contra, o Corinthians precisou avançar em busca do empate, mas também não teve sucesso. Em uma bola perdida, o São Paulo chegou à área adversária com quatro jogadores contra três corintianos. Mais uma vez, a falta de intensidade e uma marcação completamente desencaixada proporcionaram uma chance que os donos de casa souberam aproveitar para fazer o 2 a 0.

A torcida são-paulina já começava a fazer planos para a final, quando viu Jandrei falhar de forma bizarra. O goleiro foi sair jogando, tropeçou no gramado e viu Jô descontar. O jogo que estava controlado, ganhou contornos de emoção nos minutos finais, mas a vitória são-paulina foi confirmada.

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