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

Podcast

UOL Palmeiras

O podcast para os torcedores do verdão


OPINIÃO

UOL Palmeiras #32: Pressão da torcida será benéfica ao Verdão

Do UOL, em São Paulo

05/10/2021 16h00

O Palmeiras vive a expectativa de reencontrar sua torcida, mas qual será o impacto que a pressão das arquibancadas terá sobre a equipe? No sábado (9), o Allianz Parque volta a receber torcedores para o duelo contra o Red Bull Bragantino pelo Brasileirão. Será o primeiro teste diante de fãs exigentes para uma equipe criticada pelo estilo de jogo defensivo adotado pelo técnico Abel Ferreira.

No podcast UOL Palmeiras #32 (ouça na íntegra no episódio acima), o apresentador Vanderlei Lima e o repórter Diego Iwata Lima conversaram com Rodrigo Barneschi, autor do livro "Forasteiros", no qual conta histórias como torcedor de arquibancada. Eles analisam os pontos positivos e negativos da volta desta relação entre o time e os torcedores.

"Tem pontos positivos e negativos. Entendo que essa declaração do Abel, de que vai haver alguém para acordar o time, faz muito sentido. O jogador entra em campo e tem 12 mil, 13 mil pessoas, fica mais atento e preocupado em agradar ao torcedor. Pode, às vezes, com uma torcida muito exigente, virar-se contra o time, mas entendo ser algo muito positivo", aponto Barneschi.

Iwata ressaltou que o reencontro com os torcedores deve trazer um impacto maior para os jovens atletas do elenco alviverde. "Existe uma impressão de que o sucesso desse Palmeiras do Abel Ferreira, em parte, tem a ver com o fato de os jogadores terem atuado sem torcida. Para os jovens da base, cujas partidas não têm público, foi como se eles migrassem de um nível de dificuldade dentro do campo, mas não para uma característica fora de campo que eles não conheciam", analisou o repórter.

Barneschi citou um momento no qual a presença da torcida certamente teria feito a diferença no Allianz Parque. A derrota por 2 a 0 para o River Plate, na semifinal da última edição da Libertadores, quase complicou a equipe, que se classificou para a decisão por ter vencido por 3 a 0 no jogo de ida, disputado em Buenos Aires.

"amos um ano e meio sem torcida e isso teve impacto em vários momentos. Na semifinal contra o River Plate, não digo que seria totalmente diferente, mas talvez o time tivesse algum poder de reação e alguma capacidade de retomar o controle do jogo. Estou muito empolgado com essa volta. Alguns jogadores são muito novos e não tiveram essa oportunidade com o público e vão sentir isso agora. É entender como cada um deles vai reagir a esse momento", finalizou

Ouça o podcast UOL Palmeiras e confira também o bate-papo sobre a expectativa para a final da Libertadores, principalmente com a preocupação para a torcida chegar a Montevidéu.

Os podcasts do UOL estão disponíveis em uol.com.br/podcasts e em todas as plataformas" de distribuição de áudio. Você pode ouvir UOL Palmeiras, por exemplo, no Spotify, Apple Podcasts, Google Podcasts, Amazon Music e YouTube.