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

Klein: "Acho difícil desbancar hegemonia de Palmeiras e Flamengo"

Do UOL, em São Paulo

09/03/2021 04h00

Palmeiras e Flamengo mais uma vez terminaram a temporada como protagonistas no futebol brasileiro. A conquista de títulos importantes, a força financeira e elencos competitivos dos dois deixa uma questão no ar: é possível dizer que ambos já exercem uma hegemonia?

No Fim de Papo, live pós-rodada do UOL Esporte - com os jornalistas Isabela Labate, Alícia Klein, José Trajano e Ricardo Perrone - o tema foi discutido e os dois clubes foram apontados como grandes favoritos para as disputas em 2021. Isso não quer dizer, porém, que nenhum adversário seja capaz de superá-los.

"Fica cada vez mais consolidada essa hegemonia que a gente tem visto nos últimos cinco anos, dividida entre Palmeiras e Flamengo, que já tem seus elencos montados, técnicos que encaixaram. Acho difícil que essa hegemonia dos dois seja desbancada", analisou Klein.

Para Trajano, a dupla não deve encontrar tantos obstáculos no caminho para erguer novas taças. "Está na cara que Palmeiras e Flamengo saem na frente. O Palmeiras, por tudo que conseguiu, pela renovação, pelos meninos que têm e por um elenco mais cheio de bons jogadores, e o Flamengo, não só pelos feitos, mas também conta com bons garotos, são os dois times com potencial de ter um ano na frente dos outros", comentou.

Perrone concorda. "Espero uma temporada na qual Palmeiras e Flamengo largam na frente. Não vejo os rivais do Palmeiras em São Paulo fazendo frente. Deve consolidar hegemonia em São Paulo como o Flamengo já fez no Rio de Janeiro", considerou.

Os três jornalistas apontaram quem tem maiores chances de superar Palmeiras e Flamengo em 2021. "O Atlético-MG fica como ponto de interrogação. O Inter pode vir bem como novo treinador, mas fica dúvida. Vale prestar atenção no trabalho do Crespo no São Paulo", disse Klein.

Embora tenha sido citado como possível adversário, o Atlético-MG também foi visto com desconfiança por Perrone. "O Atlético-MG ainda parece estar naquele modelo de gastar para correr atrás do título. Acho que pode chegar", opinou. Trajano não se animou tanto com o Galo e nem com outros rivais. "O Atlético-MG gastou muito, mas não se acertou. E todo mundo trocou de técnico", lembrou, citando São Paulo, Internacional e Santos.