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

OPINIÃO

'Não dá para votar no Neymar como melhor do mundo', diz Julio Gomes

Colaboração para o UOL, em Aracaju

28/02/2023 19h07

O técnico Tite e o zagueiro Thiago Silva votaram em Neymar como melhor jogador do mundo no prêmio The Best da Fifa. No Fim de Papo, apresentado diariamente às 18h por Eduardo Tironi, o colunista Julio Gomes criticou os votos do ex-treinador e do zagueiro da seleção brasileira.

Não dá para votar no Neymar como melhor do mundo, não foi um dos dez melhores da temporada ada, dos dez da atual temporada, dos dez da Copa do Mundo... Em qualquer recorte não dá para votar no Neymar como melhor do mundo, foi o que fizeram o Tite e o Thiago Silva, com a patriotada, e o Messi. Tem muita fanfarronice nessas votações." Julio Gomes

Na opinião de Tironi, o voto de Tite expôs a relação que ele construiu com Neymar durante os seis anos em que esteve à frente da seleção brasileira.

A seleção era o time do Neymar, o pai podia entrar na concentração, o Neymar ia falar o Tite falava por ele, como se ele fosse um tutor, um pai do Neymar o tempo todo. Talvez esse tenha sido um dos maiores pecados do Tite na seleção." Eduardo Tironi

Arnaldo Ribeiro: 'Cada coisa que surge pós-Copa depõe contra o Tite'

Arnaldo Ribeiro também criticou o voto de Tite no The Best e disse que as notícias relacionadas ao treinador após a Copa do Mundo depõem contra o trabalho dele.

A cada fator relacionado ao Tite fica pior para ele pós-Copa: a cada boa atuação do Vinicius, a cada episódio macabro envolvendo Daniel Alves, a cada declaração do Thiago Silva, a cada atuação irregular do Raphinha... A atuação dele como treinador nessa Copa conseguiu ser pior que em 2018. Esse ciclo do Tite escancara as limitações dele como selecionador e treinador. Cada coisa que surge depõe contra ele. Não tem uma dentro, era nota 5 depois da Copa, está para nota 2 já." Arnaldo Ribeiro

'O Flamengo estava na pole e ficou parado no grid com VP', analisa RMP

O Flamengo disputa hoje mais um título: a Recopa Sul-Americana, contra o Independiente Del Valle, às 21h30 no Maracanã. O colunista Renato Maurício Prado afirmou que o técnico Vítor Pereira tem obrigação de conquistar a taça para tirar o time do zero em 2023 e fez uma metáfora automobilística.

O Flamengo estava na pole position, na primeira fila ao lado Palmeiras. Deram a bandeirada de largada, foi todo mundo e ficou o Flamengo parado no grid, não rodou dois centímetros. Aí tá correndo mecânico, aquela bagunça toda, e tá lá o Flamengo paradinho. O cara não soube ligar a embreagem para arrancar, não tem uma exibição do Flamengo nesse ano que você diga que jogou bem. Ou dá a partida e começa a andar, e ganha a Recopa e o Carioca, ou então é bandeira preta." RMP

Assista ao Fim de Papo na íntegra