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

Rodrigo Mattos

OPINIÃO

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

Palmeiras é punido por não jogar de igual para igual contra o Tigres

Abel Ferreira acompanha o Palmeiras na partida contra o Tigres na semifinal do Mundial de Clubes - EFE/EPA/NOUSHAD
Abel Ferreira acompanha o Palmeiras na partida contra o Tigres na semifinal do Mundial de Clubes Imagem: EFE/EPA/NOUSHAD

07/02/2021 16h55

Receba os novos posts desta coluna no seu e-mail

Email inválido

Quando um brasileiro chega ao Mundial de Clubes, é comum o desprezo de boa parte da imprensa nacional com os times que o enfrentam. Foi o mesmo com o Tigres. Bom, pelo que se viu na semifinal do Mundial, era o time mexicano o mais forte em campo, com mais técnica, mais recursos.

Lembremos que, em 2019, o Flamengo foi ironizado porque tinha se orgulhado de jogar uma partida igual diante do Liverpool, na final do Mundial. Pois o Palmeiras não conseguiu fazer uma partida equilibrada diante do Tigres a maior parte do tempo.

De início, já ficava claro a diferença dos estilos dos times. O Palmeiras tem seu modelo de jogo reativo para explorar o contra-ataque dos rivais com velocidade. Já o Tigres é mais lento e mais técnico: sua circulação de bola é melhor. E tem um craque em Gignac.

Com os dois times cautelosos, o jogo ficava melhor para a equipe mexicana. Sim, o Palmeiras teve alguns bons momentos quando marcou mais forte e tentou pegar o adversário desarmado. Mas só obteve uma conclusão perigosa com Ronny, de longe.

Do outro lado, o Tigres tinha a liderança de Gignac que se mexia por todo o meio e ataque. Sua inteligência e técnica iam abrindo espaços na defesa palmeirense. Foram três conclusões perigosas, duas do centroavante, que pararam em belas defesas de Weverton. Destaques também para Quiñonez e Rafael Carioca na construção do jogo mexicano.

Não houve mudança para o segundo tempo. E o Tigres estava melhor quando uma triangulação deixaria Gonzalez na cara do gol. Foi puxado por Luan em pênalti bem batido por Gignac.

Em vantagem no placar, o time mexicano recuou e ou a enrolar o jogo. O Palmeiras era inofensivo até que Abel Ferreira ou a mexer no time. Willian, Scarpa, Felipe Mello, Mayke tornaram o time pelo menos mais acelerado. Houve mais uma chance quando Willian arrancou pela ponta e Luiz Adriano quase concluiu a gol. E, por fim, um abafa na base da bola na área com chute perto do gol de Viña.

No final, foi muito pouco ofensivamente para 90 minutos de jogo. Dá para dizer que, pelo que foi a semifinal, surpresa seria se o Palmeiras se classificasse. Consideradas as chances efetivas de gol, nem equilibrar o jogo foi possível ao time brasileiro.