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

Estreante Jandrei pega pênalti e impede derrota do São Paulo para o Ituano

Jandrei defendeu pênalti contra o Ituano em sua estreia pelo São Paulo -  JEFFERSON DE AGUIAR/PERA PHOTO PRESS/ESTADÃO CONTEÚDO
Jandrei defendeu pênalti contra o Ituano em sua estreia pelo São Paulo Imagem: JEFFERSON DE AGUIAR/PERA PHOTO PRESS/ESTADÃO CONTEÚDO

Colaboração para o UOL, em Santos (SP)

30/01/2022 17h55

O São Paulo empatou em 0 a 0 com o Ituano hoje (30), no Morumbi, pela segunda rodada do Campeonato Paulista. E o resultado poderia ser pior se o goleiro Jandrei não tivesse defendido pênalti cobrado pelo meia Gerson Magrão ainda no primeiro tempo.

O técnico Rogério Ceni rodou o elenco e apostou em Rigoni como centroavante. A opção não funcionou e o Tricolor apresentou os mesmos problemas de criatividade da estreia com derrota por 2 a 1 para o Guarani, em Campinas. Bem organizado, o Ituano apostou no contra-ataque e levou um ponto para casa depois de vencer o Novorizontino na primeira rodada.

O São Paulo foi ao terceiro lugar do Grupo B, com um ponto, enquanto o Ituano é o vice-líder do Grupo C, com quatro somados. Na próxima rodada, o Tricolor visitará o Red Bull Bragantino na próxima quinta-feira (3), em Bragança Paulista. A equipe de Itu receberá a Inter de Limeira no mesmo dia.

Quem foi bem: Jandrei e Alisson

Jandrei foi destaque óbvio pela defesa do pênalti e outras intervenções seguras, principalmente uma nos acréscimos quando João Victor saiu cara a cara. Entre os de linha, Alisson foi o mais produtivo e deu trabalho para os marcadores do Ituano.

Quem foi mal: Patrick e Rigoni

Patrick errou muito e foi substituído no começo do segundo tempo. Já Rigoni foi sacrificado ao ser improvisado como centroavante. Foi recuado na etapa final e também não rendeu.

O jogo do São Paulo: falta profundidade

O São Paulo foi pouco agressivo no jogo. O Tricolor de Ceni ficou com a bola, mas pouco entrou na área do Ituano. Os mandantes só assustaram na bola parada. Pelo chão, pouca coisa foi construída.

Estreante com estrela

Logo na primeira partida pelo São Paulo, Jandrei defendeu um pênalti cobrado por Gerson Magrão. O goleiro busca se tornar titular no lugar de Tiago Volpi, contestado por parte da torcida. Na transmissão do Premiere, Jandrei disse que achou poucos vídeos de Magrão em penalidades máximas e acertou o canto esquerdo por instinto.

Opção de Ceni não funciona

O técnico do Tricolor escalou Rigoni como centroavante. E ele mal tocou na bola durante todo o primeiro tempo. A única chance clara do São Paulo foi em escanteio, num desvio sutil de cabeça de Patrick que colocou a bola no travessão. Na etapa final, Calleri entrou e Rigoni foi recuado, mas o atacante seguiu abaixo da expectativa e saiu para a entrada de Eder.

Promessa ganha minutos

Caio, destaque na Copa São Paulo de Futebol Júnior, jogou metade do segundo tempo. Ele entrou pela ponta esquerda, onde Rogério Ceni pediu reforço, e pouco criou.

FICHA TÉCNICA

SÃO PAULO 0 x 0 ITUANO

Data: 30/1/2022

Local: Morumbi, em São Paulo (BRA)

Hora: 16h (de Brasília)

Árbitro: Salim Fende Chavez

Assistentes: Fabrini Bevilaqua Costa e Amanda Pinto Matias

VAR: Vinicius Furlan

Cartões Amarelos: Miranda e Gabriel Sara (SAO) e Igor Henrique (ITU)

Público e renda: 16.312/R$ 478.617,00

SÃO PAULO: Jandrei, Rafinha, Miranda, Diego Costa e Welington (Reinaldo); Nestor (Pablo Maia), Gabriel Sara, Patrick (Calleri) e Nikão (Caio); Alisson e Rigoni (Eder). Técnico: Rogério Ceni

ITUANO: Pegorari, Pacheco, Rafael Pereira, Cleberson e Roberto Jiménez; Lucas Siqueira, Igor Henrique (Bernardo), Lucas Siqueira e Gerson Magrão (Rafael Elias); Calyson (João Victor) e Aylon (Neto Berola). Técnico: Mazola Jr.