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

ANÁLISE

Ricardo Rocha: Palmeiras fez jogo muito pequeno para o que é o Mundial

Do UOL, em São Paulo

08/02/2021 04h00

Derrotado pelo Tigres por 1 a 0 na semifinal do Mundial de Clubes, com de Gignac, em cobrança de pênalti cometido pelo zagueiro Luan, o Palmeiras mais uma vez teve uma atuação abaixo do esperado em um jogo decisivo, como havia ocorrido diante do River Plate, quando perdeu em seu estádio por 2 a 0 e avançou à final da Libertadores por ter vencido fora de casa por 3 a 0, e também na final contra o Santos, na qual a única finalização certa do time de Abel Ferreira foi o gol de cabeça de Breno Lopes, que deu o título ao Alviverde.

No Fim de Papo, live pós-rodada do UOL Esporte — com Isabela Labate, Rodrigo Mattos e Milly Lacombe —, Ricardo Rocha analisa a atuação do Palmeiras e afirma que foi o terceiro jogo decisivo seguido no qual o time mostrou muito pouco e o nível do futebol jogado foi abaixo do que deveria ser para um Mundial de Clubes.

"Esses três últimos jogos eu não vi nada do Palmeiras, nada que me impressionasse, já no jogo do River, aí vai na final contra o Santos e não jogou nada, ele não foi superior, mas é aquilo, futebol a bola tem que entrar e numa jogada, no cruzamento do Rony o garoto foi lá e fez um golaço de cabeça, ganhou o jogo e te digo mais, não foi superior. Eu não vi estratégia do treinador dentro de campo, em mudanças táticas", afirma o ex-zagueiro.

"Eu esperava ele mudar no jogo com o Santos, quando o Santos esteve um pouquinho melhor, eu falei, 'ele deve mudar no segundo tempo, colocar o Patrick de Paula, os garotos, ter uma mudançazinha ali', mas ele não mudou, mudou no final. E hoje foi a mesma coisa, mudou no final. A equipe do Tigres foi superior ao do Palmeiras, jogou muito bem, amassou em alguns momentos a equipe do Palmeiras taticamente. Então eu não vi mudança tática no Palmeiras", completa.

O comentarista afirma que as primeiras substituições promovidas por Abel Ferreira no segundo tempo, quando tirou Danilo e Zé Rafael para colocar Felipe Melo e Patrick de Paula, seriam criticadas se tivessem sido feitas por um técnico brasileiro.

"Estou querendo encontrar o Palmeiras nesses três jogos, eu não vi. Jogando futebol, tanto os jogadores não renderam, como a equipe taticamente, eu não vi nada no Palmeiras, uma equipe que amassasse. O Palmeiras hoje chegou um momento no segundo tempo que se é treinador brasileiro a gente está metendo o pau. Ele trocou dois volantes por dois volantes, ele não buscou uma equipe ofensiva", diz Ricardo Rocha.

"Perder de 1 a 0, perde por 2, por 3, é uma competição, você não pode perder, você tem que buscar o empate. E em nenhum momento eu vi esse Palmeiras em busca do empate, em nenhum momento. Claro que teve uma chance no final o Viña, chutou uma bola que poderia ter sido do empate, mas eu digo, o jogo do Palmeiras foi muito baixo, foi muito pequeno para a competição que é, então mereceu ser eliminado", conclui.

** Este texto não reflete, necessariamente, a opinião do UOL