;(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 mantém rotina de péssimas apresentações e falta de ideias

Colunista do UOL

02/09/2020 23h26

Receba os novos posts desta coluna no seu e-mail

Email inválido

O Palmeiras voltou a apresentar um péssimo futebol em jogo do Campeonato Brasileiro, com a capacidade até de afetar até o adversário com o mesmo problema. A "vítima" da vez foi o Internacional, que também não teve uma grande apresentação, mas ao menos tem a desculpa de ter jogado praticamente com o time reserva.

O time gaúcho ainda fez o gol aos 46 minutos do 2º tempo, em pênalti que o juiz primeiro preferiu não marcar, mas depois recuou após observar o VAR. O Alviverde ainda empatou com um gol que não poderia ser mais simbólico: Gustavo Gómez aproveitou um tropeço de Rony dentro da área para dar a assistência na cabeça de Luiz Adriano.

Antes desses últimos cinco minutos agitados, o jogo não apresentou nada. Vanderlei Luxemburgo testou mais uma formação, desta vez com apenas Luiz Adriano como atacante e uma linha de cinco no meio-campo formado por Patrick de Paula, Bruno Henrique, Gabriel Menino, Zé Rafael e Lucas Lima.

Não deu certo de novo. Luiz Adriano ficou isolado em boa parte do jogo, lutando sozinho contra a defesa adversária. Lucas Lima, mais uma vez, mostrou disposição, mas não pôde contar com seus companheiros para se movimentar em busca do espaço vazio. Para quem ele vai tocar se ninguém se mexer à frente? Para o lado.

Depois, Luxemburgo tentou colocar a sua equipe para frente. Tirou Gabriel Menino, que continua sendo escalado de maneira errada pelo lado do campo, e colocou Rony. O atacante saiu do banco, mas há até quem pergunte se ele entrou mesmo no gramado. Após a troca que sinalizava um time mais ofensivo, o treinador resolveu, então, ir na direção oposta ao tirar Zé Rafael para colocar Ramires.

O péssimo nível do futebol continuou mesmo com Eduardo Coudet promovendo as entradas de alguns titulares que estavam poupados, como Thiago Galhardo, Edenílson e Boschillia.

Com o clássico contra o Santos sendo a exceção, o Palmeiras já havia apresentado futebol ruim contra Athletico, Bahia, Goiás e Fluminense. A impressão é que o time fica esperando o aleatório para conseguir algo. Fechado atrás, a esperança fica por conta de uma bola parada ou um erro do adversário, porque a criação é inexistente. Aos 42 minutos do 2º tempo, o Palmeiras não tinha finalizado a gol nenhuma vez segundo o Sofascore.

É bem claro que há dificuldades para todos os times do país por conta da longa paralisação causada pela pandemia e pela falta de ritmo. Há, no entanto, vários que já exibem progresso como o próprio Internacional, o Santos e o Flamengo. Enquanto isso, o Alviverde se apoia na história de Luxemburgo e na aposta da diretoria do início do ano para manter o treinador que não dá sinal nenhum de evolução.