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

Podcast

UOL São Paulo

O podcast para o torcedor tricolor


OPINIÃO

UOL São Paulo #34: Tricolor volta a apresentar velhos problemas

Do UOL, em São Paulo

26/10/2021 16h00

A derrota por 1 a 0 para o Red Bull Bragantino no último domingo (24) expôs velhos problemas do São Paulo. O Tricolor, que havia apresentado virtudes na vitória sobre o Corinthians (1 a 0) e parecia engrenar, voltou a oscilar. Essa irregularidade gerou uma situação peculiar para a torcida, que convive tanto com o sonho de classificação para a Libertadores como a apreensão pela proximidade da zona de rebaixamento.

No podcast UOL São Paulo #34 (ouça na íntegra no episódio acima), o apresentador Vanderlei Lima, o colunista Menon e o repórter Brunno Carvalho falaram sobre as dificuldades que o Tricolor apresentou no jogo em Bragança Paulista, com falhas que pareciam resolvidas no clássico contra o Corinthians.

"Houve uma total falta de intensidade. Contra o Corinthians, o São Paulo saiu matando, marcou pressão, não deixou o adversário respirar e fez dois gols no começo, sendo um deles anulado. O São Paulo não mostrou isso em Bragança. Depois, quando já estava perdendo, não teve aquele tudo ou nada, quando vai para o sufoco", apontou Menon.

Carvalho chamou a atenção para o setor defensivo do clube do Morumbi, que não consegue resolver o problema das jogadas aéreas. "É um time no qual a defesa às vezes se perde um pouco. Contra o Corinthians, foi muito segura, mas ainda dá muitos vacilos que são importantes em uma hora decisiva. O gol do Red Bull Bragantino sai em uma bola pelo alto, que tem sido um problema na temporada inteira. O Crespo mudou várias formações e é algo recorrente. Pelo jeito, isso não será resolvido. É difícil imaginar uma mudança drástica faltando dez jogos para o fim do campeonato", observou o setorista.

Para Menon, Pablo não tem mais espaço no Tricolor. O atacante voltou a ser criticado pelo incrível gol perdido contra o Red Bull Bragantino, quando a partida ainda estava 0 a 0. "Outro problema é o Pablo. Ele foi bem no Athletico e tem suas qualidades, mas não pode perder aquele gol, de jeito nenhum. Não o acho ruim tecnicamente, mas para o São Paulo não dá mais. Ele pode ser muito feliz em outro lugar. Ele está muito marcado por erros que não podem acontecer, e acontecem sempre com ele", criticou o colunista do UOL.

Carvalho destacou que o setor ofensivo do Tricolor vive uma 'seca' de gols, independentemente das falhas cometidas por Pablo. "O que mais impressionou é a quantidade de gols perdidos pelo São Paulo. Além do lance do Pablo, foram 15 chutes, seis deles na direção do gol. Foram muitas chances desperdiçadas. Dava até para não perder para o Red Bull Bragantino", completou.

Ouça o podcast UOL São Paulo e confira também a expectativa para a escalação do 'ataque dos sonhos' do técnico Rogério Ceni, com Calleri, Luciano e Rigoni.

Os podcasts do UOL estão disponíveis em uol.com.br/podcasts e em todas as plataformas de distribuição de áudio. Você pode ouvir UOL São Paulo, por exemplo, no Spotify, Apple Podcasts, Amazon Music e YouTube.