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

Lavieri: 'Mesmo com goleada, Palmeiras deixa claro que prioriza Brasileiro'

Do UOL, em São Paulo

13/04/2022 04h00

Em seus dois jogos disputados pela Libertadores, o Palmeiras utilizou formações alternativas. Mesmo com um time mesclado de reservas e titulares, o Verdão obteve duas goleadas: 4 a 0 sobre o Deportivo Táchira e 8 a 1 em cima do Independiente Petrolero. Com uma chave considerada fácil no torneio continental, o clube alviverde concentra suas forças no Brasileirão - logo na estreia, porém, perdeu em casa para o Ceará por 3 a 2.

Na Live do Palmeiras, programa do UOL Esporte logo após as partidas do Verdão, os jornalistas Alicia Klein e Danilo Lavieri debateram sobre a estratégia do Palmeiras em poupar alguns de seus titulares na Libertadores e encarar o Brasileirão com força total, algo contrário ao que foi visto em anos anteriores em outros clubes brasileiros.

"O Palmeiras deixou bem claro que a prioridade nesse início de ano é o Brasileirão. Jogou com o time B contra o Deportivo Táchira e o Independiente Petrolero. Provavelmente, jogará com os titulares no sábado contra o Goiás (18), assim como fez contra o Ceará", disse Lavieri, referindo-se ao duelo pela segunda rodada do Brasileirão - a partida começa às 16h30 (horário de Brasília), com acompanhamento minuto a minuto do Placar UOL.

Para Klein, a ideia do Palmeiras se concentra em evitar um grande desgaste dos jogadores, por isso a decisão de poupar alguns deles independentemente da competição. "Não consigo cravar que seja uma priorização do Brasileiro. A sensação é de que a equipe técnica do Abel Ferreira abriu uma planilha do Excel para conseguir gerenciar esses jogadores para sobreviver ao calendário e a essa intensidade que o time vai enfrentar até o fim do ano", observou.

Lavieri ressaltou que o plano alviverde difere daquele utilizado pelos clubes brasileiros, que veem a Libertadores em primeiro plano desde o começo da disputa. "É uma coisa curiosa. Nós nos acostumamos a ver o Palmeiras priorizar a Libertadores por muito tempo. Não sei se agora, por conta do bicampeonato ou porque o Abel viu os times e os achou muito fracos, resolveu entrar com o time B", comentou o colunista do UOL.

O rodízio pode durar até após a fase de grupos, como salientou Klein. "O Palmeiras tem uma logística muito difícil nessa fase de grupos da Libertadores, mas adversários frágeis. O que se faz? Segura o time titular para jogar em casa e no início do Brasileiro e leva força total na Libertadores no mata-mata e, ainda assim, dependendo de quem pegar nesse mata-mata. Mais do que priorizar o Brasileiro, o Abel está fazendo conta com as limitações que sabe haver no elenco", frisou.

A colunista do UOL mostrou que o time ainda sente carências na reposição de algumas posições e, por isso, precisa poupar com sabedoria. "O Palmeiras tem dificuldade em algumas posições. Na hora em que não pode contar com seus titulares, há uma queda de rendimento grande. O Abel está olhando para isso e vendo onde dá para fazer resultado sem gastar todos os recursos, economizando talento. Onde ele poupou, fez 12 gols e sofreu um. Onde entrou com o time titular, o Palmeiras teve um apagão e perdeu por 3 a 2 em casa", finalizou.

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.