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

São Paulo

Dorival fala sobre Ceni e exalta vitória do São Paulo na estreia: 'alívio'

Do UOL, em São Paulo

22/04/2023 22h00

O técnico Dorival Jr falou sobre a saída de Rogério Ceni após vitória do São Paulo sobre o América-MG, hoje, pela segunda rodada do Campeonato Brasileiro.

Incômodo ao falar sobre saída de Ceni: "É muito delicado falar assumindo a posição de uma pessoa que representa o que o Rógerio representa para o São Paulo. Para mim, até incomoda ter que falar algo a respeito, até porque é uma pessoa que eu tenho um carinho e um respeito especial".

Substituto de Ceni pela segunda vez: "Coincidências da vida, é a segunda vez que estou entrando justamento no momento que ele está saindo. Lógico que fico feliz por estar voltando a um clube como o São Paulo, porém eu me coloco também na condição do Rogério, sei o sentimento que ele deve ter neste instante, que é um fato natural, ainda mais ele, com a história que tem aí dentro. Vou tentar fazer o meu melhor, dando sequência a tudo o que ele vinha fazendo, tentar aproveitar o máximo possível".

Aprovou a entrega dos jogadores: "O resultado não espelha o que foi a partida. Partida muito complicada. Se tivesse acontecido um gol pelo lado do América, talvez a história da partida fosse outra. Tenho que enaltecer a equipe pela entrega. foi uma semana conturbada. Querendo ou não você muda um pouco o foco do objetivo principal, que é o jogo. Isso tudo criou um problema extra na cabeça de cada um. Temos que trabalhar para melhorar".

O que mais Dorival Jr falou

Sobre o resultado

"Foi um resultado de alívio, um ótimo resultado, porém não foi e não saímos totalmente satisfeitos porque temos que melhorar e muito."

Postura do time

"Demonstrou uma vontade extra de alcançar um resultado. Quando as coisas não acontecem de maneira natural, se você não tiver esse extra, você vai encontrar um resultado negativo pela frente. Não foi um jogo fácil. O placar não espelha o que foi a partida. Temos que melhorar muito se objetivarmos algo maior".

Volta de Luan

"Não é nenhum desafio ou situação que gere competição. O Luan é um jogador do clube e será aproveitado dentro de uma necessidade e do merecimento que ele tem. Ele vai encontrar o caminho dele com a diretoria, até porque é um jogador que todos gostaríamos que permanecesse".

Questão física

"A parte física está muito próxima de um encontro, de uma postura, de um posicionamento ideal. Às vezes, esse lado físico não mostra a realidade. Talvez um acerto aqui ou ali. Melhorando as posições dos jogadores, talvez não tenhamos essas dificuldades. Senti que perdemos combatividade, mas me prendo muito mais ao posicionamento do que um desgaste maior"

Jogo contra o Ituano

"É uma partida decisiva, que promete muito. equipes que já se conhecem. Sempre muito dificil jogar contra. Eu não tenho dúvidas que será mais um jogo muito disputado. eu espero uma partida tão dificil quanto a de hoje. encontraremos o caminho, mas vai levar um tempo".

São Paulo