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

Marcel Rizzo

OPINIÃO

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

Uruguai decepciona, e América do Sul tem começo ruim na Copa do Qatar

Valverde, do Uruguai, e Jae Sung Lee, da Coreia do Sul, disputam a bola durante a partida da Copa do Mundo - Jeroen van den Berg/Soccrates/Getty Images
Valverde, do Uruguai, e Jae Sung Lee, da Coreia do Sul, disputam a bola durante a partida da Copa do Mundo Imagem: Jeroen van den Berg/Soccrates/Getty Images

Colunista do UOL

24/11/2022 11h55

Desde a Copa de 2006, na Alemanha, que as seleções sul-americanas não chegavam a um Mundial cotadas como favoritas no mesmo patamar de igualdade do que as forças da Europa como nesta Copa do Qatar.

Dezesseis anos atrás o Brasil tinha seu quadrado mágico, com Kaká, Ronaldinho, Ronaldo e Adriano, e a Argentina um time repleto de talentos, com um novato Messi, Riquelme, Crespo, Sorín, Tevez, Aimar e Saviola. Ambos caíram nas quartas de final, o Brasil perdendo por 1 a 0 para a França e os argentinos nos pênaltis para a Alemanha.

Em 2022, a seleção brasileira tem as opções ofensivas mais interessantes desde 2006 (e não é mais Neymardependente) e a Argentina talvez o melhor time (não talentos, equipe) para Messi em uma Copa. O Uruguai tem uma mescla de veteranos como Luis Suárez e Cavani com promessa como Pellistri e o melhor jogador hoje em atividade no futebol sul-americano, Arrascaeta.

No papel tudo bonito, mas em campo até agora só o Equador, o quarto representante da Conmebol, venceu — o Brasil, claro, ainda estreia nesta quinta-feira contra a Sérvia. E os equatorianos bateram o Qatar, donos da casa que se mostraram frágeis na abertura.

O empate sem gol do Uruguai com a Coreia do Sul no jogo que acabou no fim da manhã desta quinta, na hora de Brasília, foi uma ducha de água fria para quem imaginava uma equipe uruguaia forte com as diferentes opções que Diego Alonso tem. Não foi um vexame como a derrota argentina para a Arábia Saudita, 2 a 1 na terça-feira, mas é ruim porque os dois próximos confrontos, contra Portugal e Gana, devem ser mais difíceis.

A Argentina pode ser eliminada neste sábado, se perder do México. Uma frustração para um time que ganhou a Copa América de 2021 dentro do Maracanã, naquele 1 a 0 sobre o Brasil na primeira taça de Messi com a seleção. E que estava havia 36 jogos invicto comandado por um Lionel Scaloni que de interino conseguiu transformar em um time competitivo o amontoado de 2018, na Rússia.

O Equador deve disputar com Senegal a segunda posição do Grupo A, e o Brasil é favorito para ar na liderança do Grupo G, apesar de ter uma estreia difícil contra o bom time da Sérvia. Mas os tropeços de Argentina e Uruguai decepcionaram para quem esperava uma América do Sul dominante.