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

Torcedores do São Paulo protestam na porta do CT, e Dani Alves é xingado

Cantos contra Leco, Raí, Pássaro, Diniz e jogadores foram ouvidos hoje (3) - Reprodução/Instagram
Cantos contra Leco, Raí, Pássaro, Diniz e jogadores foram ouvidos hoje (3) Imagem: Reprodução/Instagram

Do UOL, em São Paulo

03/10/2020 11h38

Um numeroso grupo de torcedores do São Paulo, comuns e ligados à organizada Tricolor Independente, se reuniu hoje (3) de manhã, na portaria do CT da Barra Funda, para um protesto contra a situação do time - derrotado pelo River Plate na última quarta-feira, acabou eliminado na fase de grupos da Copa Libertadores. Um dos alvos foi o meia Daniel Alves.

"Ô Daniel, quebra meu galho, vai tocar samba lá na casa do c..." e "Ai que bom seria se o Daniel voltasse pra Bahia" foram alguns dos cantos em relação ao veterano de 37 anos, que teve o nome envolvido em polêmica na última semana porque postou um vídeo tocando percussão em uma festa enquanto se recuperava de lesão no braço direito.

Como o protesto havia sido anunciado nas redes sociais da torcida uniformizada, havia forte aparato policial no local, inclusive com caminhão da Tropa de Choque da Polícia Militar. Os policiais organizaram um cordão de isolamento no portão, e os torcedores ocuparam uma parte de três pistas da Avenida Marquês de São Vicente, Zona Oeste da capital, - uma pista continuou liberada para veículos.

Além de cantos como "vergonha, time sem vergonha" e "ô, a Independente está aqui e nós viemos pra cobrar, ô jogador filha da p... que não tem raça pra jogar", boa maior parte do protesto foi contra a figura do presidente Carlos Augusto de Barros e Silva, o Leco, que deixa o cargo em dezembro: "Ei Leco, quebra meu galho, sai do São Paulo e vai para a casa do c...".

Os torcedores também empunharam bandeiras e instrumentos ao longo da manifestação. Outros alvos foram Raí, diretor-executivo de futebol, Alexandre Pássaro, gerente-executivo, e Fernando Diniz, o treinador da equipe. Alguns jogadores também foram lembrados, como Arboleda, Vitor Bueno e Tiago Volpi. Faixas pediam "Fora Leco" e diziam "Gestão fracassada".

O canto sobre Arboleda chamou atenção: "Ô Arboleda, toma vergonha, sai do São Paulo e vai jogar lá na Colômbia". O zagueiro de 28 anos nasceu em Esmeraldas, no Equador.

Saiba como assistir a grandes jogos do Brasileirão ao vivo com o EI Plus! Experimente agora com o UOL Esporte Clube!

A equipe volta a campo amanhã (4), às 16h, contra o Coritiba, pela 13ª rodada do Campeonato Brasileiro.

Eliminado nas quartas de final do Campeonato Paulista pelo Mirassol e na fase de grupos da Libertadores, o São Paulo tem pela frente o Brasileirão, em que é terceiro colocado, a Copa do Brasil (enfrenta o Fortaleza nas oitavas de final) e, possivelmente, a Sul-Americana - precisa ao menos empatar com o Binacional-PER dia 20 para terminar em terceiro lugar no Grupo D.