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

OPINIÃO

Juca Kfouri: Itália vira e mexe apronta uma piada dessas de mau gosto

Do UOL, em São Paulo

25/03/2022 17h11

A Itália perdeu em casa por 1 a 0 para a Macedônia do Norte ontem (24) pela repescagem das Eliminatórias Europeias e ficou fora de sua segunda Copa do Mundo consecutiva, isso depois de ter vencido no ano ado a Eurocopa, além de uma sequência de 37 jogos sem derrotas que foi quebrada em outubro pela Espanha na Liga das Nações, antes da sequência de dois empates e a derrota decisiva na corrida para o Mundial do Qatar.

No podcast Posse de Bola #213, Juca Kfouri lamenta que pela segunda Copa do Mundo seguida a Itália fique fora, citando que é a única seleção campeã que não estará jogando no Qatar em dezembro, já que Alemanha, Argentina, Brasil, Espanha, França, Inglaterra e Uruguai estão classificados.

"Uma tristeza não ter a Itália. Já foi triste não vê-la na Rússia, será novamente triste não vê-la no Qatar. A boa notícia para o nosso pachequismo é que só a Alemanha ficou em condição de empatar com o Brasil em número de conquistas e chegar ao pentacampeonato, a Itália não pode mais", diz Juca.

"Mas é realmente uma tristeza você pensar que em Palermo, com quase 40 mil torcedores, a Itália foi eliminada na semifinal da repescagem, não foi nem na final, não foi nem contra Portugal, que seria mais compreensível, foi contra a Macedônia. A Itália adora ser protagonista de eventos desta ordem, desde 1966, quando foi eliminada pela Coreia do Norte. A Itália vira e mexe apronta uma piada dessas de mau gosto", completa.

O jornalista cita a dificuldade da Itália para furar a defesa da Macedônia do Norte, elogiando o empenho dos jogadores que buscam contra Portugal na terça-feira (29) a classificação inédita para a Copa do Mundo. Ele também vê falha do goleiro Donnarumma, considerando que era defensável o chute de Trajkovski, que ironicamente atuou entre 2015 e 2019 pelo Palermo, clube da mesma cidade onde foi o jogo que eliminou os italianos.

"Em um jogo em que a Itália tentou chutar 32 bolas ao gol, porque 16 vezes um macedônio materializou aquela frase de Neném Prancha, correr atrás da bola como se fosse um prato de comida. Porque os bloqueios dos jogadores macedônios não se limitaram a dividir, houve quatro ou cinco vezes jogadores que se jogavam à frente da bola para impedir que ela chegasse no gol", diz Juca.

"Impressionante como se entregou o time da Macedônia, como acreditou no que acabou por acontecer aos 92 minutos de jogo, em mais uma falha do jovem Donnarumma, aquela bola era perfeitamente defensável dada a distância do chute, ele pulou atrasado, aquele gol não era para ele tomar", conclui.

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, por exemplo, no Spotify, Apple Podcasts, Google Podcasts, Amazon Music e Youtube --neste último, também em vídeo. Outros podcasts do UOL estão disponíveis em uol.com.br/podcasts.