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

Posse de Bola

Programa semanal de futebol com Juca Kfouri, Mauro Cezar Pereira, Arnaldo Ribeiro e Eduardo Tironi


ANÁLISE

Posse de Bola #98: Fla empata, Palmeiras fora do Mundial, Crespo e São Paulo

Do UOL, em São Paulo

08/02/2021 13h13

O Flamengo empatou ontem (7) em 1 a 1 com o Red Bull Bragantino e deixou de depender apenas de seus próprios resultados para ser campeão brasileiro, com o Internacional podendo aumentar novamente sua vantagem na liderança, e o técnico Rogério Ceni foi mais uma vez criticado por parte da torcida, mesmo com o time tendo uma boa atuação e sofrendo o empate em uma falha individual do lateral Isla no segundo tempo.

No podcast Posse de Bola #98, Juca Kfouri destaca a qualidade do jogo entre Red Bull Bragantino e Flamengo, elogia a atuação do clube rubro-negro e aponta como injustas as críticas ao técnico Rogério Ceni, vendo um certo exagero por parte dos torcedores.

"Acho que as críticas que estão sendo feitas ao Rogério Ceni são profundamente injustas, o Rogério Ceni não ficou imóvel como tem gente dizendo, assistindo o Flamengo se despedir do título, porque o Flamengo jogava melhor que o Bragantino, ele manteve o time, surpreendentemente, um time que era para estar esfalfado, porque a sua diretoria inerte permitiu que ele voltasse a campo poucas horas depois de ter jogado o clássico com o Vasco", diz Juca.

"O Flamengo jogou, a meu ver, o tempo inteiro em cima do Bragantino, em uma noite em que o Bruno Henrique não estava feliz, porque deixou de dar um gol para o Gabigol, que ele não tinha o direito de não dar, embora eu entenda que ali o atacante chute, mas perdeu uma chance extraordinária de fazer o gol, em que o Gustavo Henrique mostrou mais uma vez que o Rogério tinha razão em insistir com ele, fez uma belíssima partida, inclusive sofreu o pênalti", completa.

O jornalista vê certa perseguição ao técnico em um jogo no qual houve falhas em finalizações e também o erro de Isla, além de o goleiro do Red Bull Bragantino ter tido uma atuação de alto nível, que impediu a derrota.

"E aí acontece porque futebol é assim, é possível que o Flamengo tenha perdido o título ontem? É possível. Em um lance do Isla. Veja que coisa maluca, o Isla sai sangrando, o Hugo simula uma lesão para dar tempo de o Isla ser atendido e voltar a campo. E aí exatamente porque o Isla tinha voltado a campo, porque o Isla provavelmente estava ainda meio tonto, porque estava com a cautela de não pôr a cabeça na bola, deixa aquela bola escapar para o Helinho e, na verdade, no único chute a gol do Bragantino no segundo tempo até ali, o Bragantino vai e faz o gol", diz Juca.

"O Flamengo fez uma partida excelente e coisas do futebol esse lance com o Isla, o Everton Ribeiro também fez uma má escolha em seguida a esse lance do Bruno Henrique, uma partida do Cleiton, goleiro do Bragantino, reclamar do quê? Pode reclamar de outros jogos que o Flamengo não foi bem, ontem não. Está muito chato esse jeito de ver jogo de futebol procurando um culpado para quando as coisas não saem exatamente como eu quero que saiam. Aí não dá", conclui.

Além do empate no único jogo de ontem pelo Campeonato Brasileiro, o programa também analisa a eliminação do Palmeiras com a derrota para o Tigres, do México, na semifinal do Mundial de Clubes, o São Paulo em negociação com o técnico argentino Hernán Crespo e o rebaixamento do Botafogo, que pela terceira vez jogará a Série B.

Posse de Bola: Quando e onde ouvir?

A gravação do Posse de Bola está marcada para segundas e sextas-feiras às 9h, sempre com transmissão ao vivo pela home do UOL ou nos perfis do UOL Esporte nas redes sociais (YouTube, Facebook e Twitter). A partir de meio-dia, o Posse de Bola estará disponível nos principais agregadores de podcasts.

Você pode ouvir o Posse de Bola em seu tocador favorito, quando quiser e na hora que quiser. O Posse de Bola está disponível no Spotify e na Apple Podcasts, no Google Podcasts e no Castbox . Basta buscar o nome do programa e dar play no episódio desejado. No caso do Posse de Bola, é possível ainda ouvir via página oficial do UOL e YouTube do UOL. Outros podcasts do UOL estão disponíveis em uol.com.br/podcasts.