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

OPINIÃO

Texto em que o autor apresenta e defende suas ideias e opiniões, a partir da interpretação de fatos e dados.

Lavieri: Palmeiras vive fase muito irregular para ser campeão brasileiro

Danilo tenta cruzamento na partida entre Palmeiras x Cuiabá pelo Brasileirão - Ettore Chiereguini/AGIF
Danilo tenta cruzamento na partida entre Palmeiras x Cuiabá pelo Brasileirão Imagem: Ettore Chiereguini/AGIF

Colunista do UOL

22/08/2021 13h00

Receba os novos posts desta coluna no seu e-mail

Email inválido

Não é novidade nenhuma que o Campeonato Brasileiro premia o time mais regular das 38 rodadas. Nos pontos corridos, não temos a chance de o oitavo lugar surpreender no mata-mata e levantar a taça. O primeiro colocado sempre vai ser o que consegue manter o melhor nível por mais tempo consecutivo: e o Palmeiras está longe de conseguir isso agora. Já são quatro partidas sem vencer, com um ponto conquistado em 12 possíveis.

A derrota para o Cuiabá hoje (22) foi retrato de um time que sofreu o gol logo no primeiro lance da partida e achava que depois amassaria o adversário até conseguir a virada. Não foi o que aconteceu. Na verdade, o Alviverde teve uma boa chance com lance de Dudu pela esquerda que resultou no gol de Zé Rafael, mas o impedimento foi confirmado pelo VAR. Depois disso, Walter só foi trabalhar bem mesmo na etapa final.

Foi nesse tempo que o Palmeiras se jogou em busca ao menos do empate, ficou com Raphael Veiga, Gustavo Scarpa, Dudu, Deyverson e Willian à frente e quase tomou o segundo. Ao se lançar para o ataque, todas as fichas eram colocadas em Dudu e, quando ele não funcionava, era Weverton lá do outro lado do campo que acabava acionado após os contra-ataques.

São quatro jogos sem vencer. Antes do Cuiabá, a sequência já contava com derrotas para o Atlético-MG e Fortaleza, além do empate com o São Paulo. Toda a gordura conseguida na boa sequência de vitórias já está mais do que queimada e, amanhã, o líder ainda pode abrir oito pontos de vantagem se vencer o Fluminense. Isso sem nem contar o Flamengo que tem jogos a menos e também poderá ultraar quando completar a tabela.

Antes dessa sequência, o Palmeiras podia até não jogar tão bem, mas as vitórias apareciam de uma maneira ou de outra. Um gol contra no triunfo diante do Fluminense, um "gol espírita" de Danilo contra o Internacional, gol nos acréscimos de Breno Lopes contra o Bahia ou de Willian contra o América-MG.

O Palmeiras avassalador de terça-feira contra o São Paulo parecia estar dormindo hoje (22) e precisa acordar a tempo de a Libertadores não ser a única alternativa de título para a temporada, já que na Copa do Brasil o time já parou no CRB.

Siga também as opiniões de Danilo Lavieri no Twitter e no Instagram