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

Palmeiras

Palmeiras frustra torcida e "dá título" ao Flamengo em Allianz esvaziado

Com pouco público no Allianz, jogo entre Palmeiras de Borja e Grêmio de Geromel garantiu título ao Fla - Bruno Ulivieri/AGIF
Com pouco público no Allianz, jogo entre Palmeiras de Borja e Grêmio de Geromel garantiu título ao Fla Imagem: Bruno Ulivieri/AGIF

Bruno Grossi

Do UOL, em São Paulo

24/11/2019 17h53

O Palmeiras frustrou sua torcida de vez com o fim das chances de conquistar um título em 2019. Em um Allianz Parque frio, esvaziado, o Verdão teve atuação apática e foi derrotado por 2 a 1 pelo Grêmio na tarde de hoje (24). O resultado fez o Flamengo, mesmo sem entrar em campo neste fim de semana pelo Campeonato Brasileiro, ser campeão.

Essa ascensão flamenguista, inclusive, anda lado a lado com a revolta palmeirense na temporada. Os torcedores acreditam que a diretoria foi mal na busca por reforços neste ano, enquanto os cariocas conseguiram montar um elenco com estrelas e competitivo. Além do Brasileirão, o Fla faturou ainda a Copa Libertadores da América ontem. Ou seja, a tarde no Rio de Janeiro foi de festa dupla.

Sem conquistas e com reforços criticados ou pouco produtivos, o Palmeiras fecha o ano em baixa apesar da vaga direta na próxima Libertadores. Quando o Grêmio abriu o placar, em gol de pênalti de Everton Cebolinha, o Allianz Parque ficou definitivamente gelado nesta tarde e os protestos contra o diretor de futebol Alexandre Mattos ganharam espaço.

O dirigente já vinha sendo atacado, principalmente por torcedores organizados, desde a queda para o próprio Grêmio na Libertadores. Hoje, antes do jogo, pediu para falar com a imprensa. Ele e a diretoria entenderam que era o momento de dar a cara, em um fim de semana de frustração da torcida pelo sucesso de um concorrente direto e costumeiramente apontado como um equivalente ao Palmeiras.

Mattos reconheceu a temporada abaixo do esperado, mas pediu respeito e reconhecimento com os títulos recentes do Verdão. Refutou ainda comparações com o Flamengo e a chance de deixar o clube antes do fim de seu contrato: "Se eu pensasse nisso, não ia por 3 anos. Tenho contrato até 2021. Nunca rompi meus contratos. No início do ano, tive duas oportunidades até financeiramente superiores, mas tinha dado minha palavra para o presidente, estou feliz aqui, sou apaixonado por tudo que envolve o clube, me dedico, e assim vou fazer até o fim do meu contrato".

Rua Palestra Itália estava bem mais vazia do que o costume 2h antes de um jogo - Bruno Grossi/UOL Esporte - Bruno Grossi/UOL Esporte
Rua Palestra Itália estava bem mais vazia do que o costume 2h antes de um jogo
Imagem: Bruno Grossi/UOL Esporte

O gol de empate, marcado também de pênalti pelo volante Bruno Henrique, até inflamou um pouco uma torcida combalida no Allianz Parque. Esse desânimo já havia sido notado antes mesmo do confronto com os gremistas, quando as ruas no entorno do estádio estavam vazias. Até os bares que costumam encher horas antes dos jogos custaram a receber torcedores. O público na arena, de pouco mais de 22 mil presentes, também é bem abaixo da média do clube, próxima a 30 mil.

Com o segundo gol gaúcho, marcado por Pepê, e o título do Flamengo confirmado, esse princípio de animação da torcida foi dissipado. O presidente Maurício Galiotte ou a ser xingado. Os coros de "Mattos, ladrão, fora do Verdão" também voltaram e foram reforçados por cantos de "time sem vergonha".

Restam ainda mais quatro rodadas no Brasileirão e as cobranças à diretoria devem seguir até o fim, enquanto o time ainda precisa lutar com o rival Santos pelo segundo lugar — os dois têm 68, mas o Peixe fica na frente por ter mais vitórias.

Errata: este conteúdo foi atualizado
Diferentemente do informado na reportagem, o Palmeiras não tem mais chances de ser campeão em 2019 e, não, em 2020. A informação foi corrigida.

Palmeiras