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

Treino do São Paulo tem torcida recepcionando time e poucas pistas de Ceni

Elenco do São Paulo treina no estádio La Boutique - Thiago Braga/UOL
Elenco do São Paulo treina no estádio La Boutique Imagem: Thiago Braga/UOL

Thiago Braga

Do UOL, em Córdoba (ARG)

29/09/2022 18h50

Em seu primeiro treino na Argentina visando a final da Copa Sul-Americana contra o Independiente del Valle, o São Paulo pôde sentir de novo o calor da sua torcida. Apesar de poucos, os torcedores que foram ao estádio La Boutique, do Talleres, fizeram barulho na chegada da delegação ao acanhado estádio, que fica em um bairro residencial de Córdoba.

A imprensa pôde acompanhar apenas 15 minutos da atividade. Durante este período, o elenco foi dividido em grupos que fizeram treinos de posse de bola, movimentação e troca de es.

Todos os jogadores do clube inscritos na competição viajaram para Córdoba.

Assim, Nikão, Arboleda e Moreira, que não estarão relacionados para a final, fizeram trabalhos de recuperação à parte.

Antes da decisão contra o Independiente del Valle, no próximo sábado, o São Paulo terá apenas mais um treinamento, na tarde de sexta-feira, de novo no campo do Talleres.

Depois da sessão de treinos, o elenco vai para o estádio Mário Kempes, onde fará o reconhecimento do gramado.

Visita ilustre

Julio Buffarini, ex-São Paulo, visita elenco tricolor em treino em Córdoba - Thiago Braga/UOL  - Thiago Braga/UOL
Julio Buffarini, ex-São Paulo, visita elenco tricolor em treino em Córdoba
Imagem: Thiago Braga/UOL

Julio Buffarini, que jogou pelo São Paulo entre 2016 e 2017, esteve no treino do São Paulo. Atualmente jogando no Talleres, ele apareceu para rever alguns amigos, incluindo aí os amigos argentinos Calleri, Bustos e Galoppo. Na noite de quarta-feira, Buffarini inclusive marcou o gol da classificação do Talleres nos pênaltis sobre o Independiente, em partida pelas quartas de final da Copa Argentina.

O São Paulo enfrenta o Independiente del Valle, do Equador, no sábado, 1º de outubro, às 17h (de Brasília), em Córdoba, na Argentina. O Tricolor vai em busca de seu segundo título na competição, já que foi campeão em 2012.

São Paulo