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

Klein: ‘Palmeiras não só ganhou bem; amassou e fez resultado inédito'

Do UOL, em São Paulo

13/04/2022 01h29

Dois jogos, duas goleadas. O Palmeiras cumpre um início avassalador na Libertadores, mesmo atuando com um time misto. No primeiro jogo, goleou o Deportivo Táchira por 4 a 0 na Venezuela; nesta terça-feira (12), atropelou o Independiente Petrolero por 8 a 1 no Allianz Parque. Ainda assim, há quem questione a capacidade do atual bicampeão do torneio continental ao apontar a fragilidade dos adversários.

Na Live do Palmeiras, programa do UOL Esporte logo após as partidas do Verdão, os jornalistas Alicia Klein e Danilo Lavieri destacaram as atuações alviverdes. Para ambos, o Palmeiras cumpre seu papel diante de equipes consideradas mais frágeis e, mesmo jogando com uma formação alternativa, deixa clara sua superioridade.

"É importante desfrutar dessa goleada histórica. É um adversário fraco e, contra um rival assim, você ganha bem. O Palmeiras não só ganhou bem; amassou e fez um resultado inédito na Libertadores. É um feito incrível. Tem que comemorar imensamente", analisou Klein, ao reforçar que o Verdão se impôs após levar um susto no começo da partida.

Para Lavieri, a goleada sobre a equipe boliviana fez os palmeirenses deixarem de lado a derrota na estreia do Brasileirão no último fim de semana. "O Palmeiras normalizou entrar na Libertadores com time B, algo que só víamos os clubes argentinos fazer, especialmente o River Plate. Não deu nem tempo de a torcida do Palmeiras ficar brava com a derrota para o Ceará [3 a 2]", comentou.

Apesar do resultado, Klein ficou apreensiva com o início do jogo, quando o Palmeiras levou um gol logo aos cinco minutos. "A sensação que eu tive, não apenas após levar o primeiro gol, mas durante todo o primeiro tempo, foi de que precisaria desgastar os titulares e colocá-los em campo para garantir o resultado. O Palmeiras precisava ganhar e, de preferência, fazer saldo. Não seria um jogo em que a comissão técnica e a torcida sairiam satisfeitas se vencesse por 2 a 1", opinou a colunista do UOL.

Lavieri lembrou que outros times brasileiros também enfrentaram rivais mais fracos e, no entanto, tiveram resultados bem diferentes dos obtidos pelo Palmeiras. "O Corinthians foi derrotado pelo Always Ready [2 a 0] e o Athletico ficou no 0 a 0 com o Caracas. Sim, o Palmeiras pegou um grupo com times fracos, mas está fazendo o que precisa contra essas equipes", disse o colunista do UOL, ressaltando as goleadas alviverdes.

Apesar do resultado, Klein fez um alerta para algumas falhas defensivas do time, principalmente na parte inicial dos jogos - e isso vale tanto para o time misto quanto para o titular. "Ficou aquele bate-cabeça, que ressaltou algumas falhas que existem na defesa e fragilidades, como no caso do Jorge na parte defensiva. Na parte ofensiva ele cria e, depois, jogou melhor. O Palmeiras estava sofrendo enfrentando um adversário muito fraco. Serve para aprender algumas lições do primeiro tempo", concluiu.

Não perca! A próxima edição da Live do Palmeiras será no sábado (16), logo após a partida contra o Goiás pelo Brasileirão. Você pode acompanhar a live pelo Canal UOL, no app Placar UOL, na página do Palmeiras no UOL Esporte ou no canal do UOL Esporte no Youtube.