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

Danilo Lavieri

Palmeiras tem uma das atuações mais constrangedoras da história do Allianz

Rodson celebra gol pelo Coritiba diante do Palmeiras, pelo Brasileirão, no Allianz Parque - Marcello Zambrana/AGIF
Rodson celebra gol pelo Coritiba diante do Palmeiras, pelo Brasileirão, no Allianz Parque Imagem: Marcello Zambrana/AGIF

Colunista do UOL

14/10/2020 20h00

Receba os novos posts desta coluna no seu e-mail

Email inválido

O Palmeiras teve hoje (14), na derrota diante do Coritiba, uma das apresentações mais constrangedoras da história do Allianz Parque. E o placar só não foi mais elástico porque Weverton fez boas defesas contra um adversário que apenas luta contra o rebaixamento neste Brasileirão.

É a terceira derrota consecutiva no Brasileirão, que afasta ainda mais o time do G-6 e que chamou a atenção não só pelo aspecto tático, mas pela falta de vontade na maior parte dos 90 minutos.

A atuação foi ruim em todos os aspectos. Vamos por partes. No tático, o time praticamente não apresentou quase nada. Com mais mudanças de escalação e formação depois da derrota para o São Paulo, o Alviverde não conseguiu triangular, não teve ultraagem de lateral, não teve transição, não teve uma formação defensiva...

O time estava espaçado na hora de atacar e na hora de defender. No primeiro gol do Coritiba, a bola saiu de frente de sua área e chegou até o outro lado em seis toques, sem nenhuma pressão adversária.

Luxemburgo ainda teve um episódio de sorte. Ele faria uma substituição aos 30 minutos do 1º tempo que seria péssima no aspecto tático e que provavelmente deixaria Gustavo Scarpa revoltado. O meio-campista foi escolhido para sair, quase que sendo o escolhido pelo técnico como o culpado depois de tanto esperar por uma chance. Foi aí que Esteves avisou que estava machucado, e o técnico mudou de opção.

Foram raríssimos os momentos coletivos para se destacar durante os 90 minutos. O gol de Gabriel Verón nasceu de uma assistência fantástica de Patrick de Paula, um dos mais lúcidos nos primeiros 45 minutos. Mesmo assim, o jovem foi substituído no intervalo. A única explicação para isso seria uma lesão do atleta.

Depois, ainda houve aquele que seria o segundo gol e acabou anulado, em uma jogada coletiva raramente vista nas últimas partidas. Para tentar melhorar o time, Luxemburgo ainda deu chance a Rony, mas não para Wesley, um dos melhores dos últimos jogos. Voltou a escalar Ramires quando precisava ganhar e tirou Luiz Adriano mesmo com mostras que ele poderia funcionar ao lado de Willian.

Como disse no começo do texto, a atuação foi ruim em vários aspectos e essa falta de vontade é mais um deles. Sem alma, os jogadores não combatiam, pareciam apenas cercar os espaços e fazer o trivial. A reação dos atletas ao tomar o gol não foi aquela que estamos acostumados de alguém pegar a bola e querer que o jogo se reinicie rapidamente. Foi de lamentação, olhares perdidos, mirando o chão.

Como de costume, o time melhorou nos minutos finais pelos mesmos motivos de sempre. O Palmeiras tem um banco com boas opções, capaz de fazer substituições sem perda técnica, e ainda aproveita que o adversário se fecha por ter a vantagem no placar.

Nas poucas vezes que conseguia articular algo, era possível ver que a defesa do Coritiba não era nada segura, não à toa é uma das piores do Brasileirão. Por vezes, até batia cabeça, mas nenhum palmeirense aproveitava as oportunidades para aumentar o placar.

A pressão em cima de Vanderlei Luxemburgo cresce cada vez mais. Maurício Galiotte já sabe que não tem o apoio de parte do Conselho, não tem mais o apoio da torcida organizada e agora resta saber o que pensam seus companheiros de Conselho Gestor.