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

A última Copa de Messi e CR7

As principais histórias do último mundial dos melhores jogadores do século

Messi homenageia filhos e esposa em chuteiras na semifinal da Copa

Lionel Messi comemora classificação da Argentina sobre a Holanda pela Copa do Mundo - REUTERS/Kai Pfaffenbach
Lionel Messi comemora classificação da Argentina sobre a Holanda pela Copa do Mundo Imagem: REUTERS/Kai Pfaffenbach

Colaboração para o UOL, em São Paulo (SP)

13/12/2022 14h58

Classificação e Jogos

Lionel Messi preparou uma homenagem para a mulher e os filhos na semifinal da Copa do Mundo de 2022, no Qatar. O craque da Argentina utilizará chuteiras personalizadas com os nomes dos quatro membros de sua família no duelo contra a Croácia (veja abaixo).

Messi e Antonela Rocuzzo se conhecem desde a infância e estão juntos há 15 anos, mas só oficializaram o casamento em 2017. O casal tem três filhos: Thiago (10), Mateo (7) e Ciro (4).

O atacante de 35 anos sonha em levar a seleção argentina para a final mais uma vez (foram vice em 2014) e conquistar o título mundial — taça que falta para a extensa galeria de Messi. A Albiceleste é bicampeã do mundo (1978 e 1986), mas não vence uma Copa há 36 anos.

A Argentina chegou até a semifinal após terminar na liderança do Grupo C. A seleção sul-americana até tropeçou na sua estreia, diante da Arábia Saudita, mas depois retomou o caminho da vitória sobre México e Polônia. No mata-mata, a equipe comandada por Lionel Scaloni superou a Austrália, nas oitavas, e a Holanda, nas quartas.

Já a Croácia, que terminou em segundo no Grupo F, eliminou o Japão e o Brasil, respectivamente, nas fases eliminatórias. Ambos os triunfos foram nas decisões por pênaltis.

O duelo de hoje será realizado no Estádio Lusail, em Doha. A partida está marcada para iniciar às 16h (de Brasília). Quem vencer enfrenta França ou Marrocos na final, que será disputada no domingo (18).

Veja as chuteiras personalizadas de Messi

Quem vai ser o campeão da Copa do Mundo?

Enquete encerrada

Total de 3203 votos
34,25%
Paul Childs/Reuters