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

Martinelli comenta susto de Neymar com seu nome na lista de Tite para Copa

Gabriel Martinelli, jogador da seleção brasileira e do Arsenal - Lucas Figueiredo/CBF
Gabriel Martinelli, jogador da seleção brasileira e do Arsenal Imagem: Lucas Figueiredo/CBF

Do UOL, em Doha (Qatar)

20/11/2022 14h35

Classificação e Jogos

A reação de Neymar ao ver o nome de Gabriel Martinelli na lista de Tite para a Copa do Mundo foi uma das mais comentadas no dia da convocação da seleção brasileira. Hoje (20), foi a vez de o atacante do Arsenal falar sobre o episódio pela primeira vez.

Em entrevista em Doha, no Qatar, o jogador revelou que o atleta do PSG é seu ídolo. "Só vi depois que me falaram sobre isso. Espero que tenha sido uma surpresa boa. Ele é ídolo para mim e espero que todos os meninos se espelhem nele", comentou.

Martinelli foi uma das surpresas não só para Neymar, mas também para boa parte da crítica e da torcida. Ele disse não se importar por ter sido um dos motivos de comentário na lista da seleção.

"Não dou importância para os que não me conhecem e não sabem do meu trabalho. Eu tenho que focar no meu futebol e nas pessoas que estão do meu lado. É só isso que importa", explicou.

Aos 21 anos, ele é o mais novo da seleção brasileira nesta Copa do Mundo. Revelado pelo Ituano, ele ainda estava na disputa da Copa São Paulo no começo de 2019 e, três anos depois, está vestindo a amarelinha para realizar seu sonho de infância.

Por conta da condição de caçula, ele itiu que sempre é o alvo da brincadeira durante os treinos da seleção. "Claro que eu sempre estou nas brincadeiras. Eu sou sempre o que está no meio do bobinho, mas essa é uma brincadeira saudável. Estar aqui é um sonho realizado. Em 2019 eu estava na Copa São Paulo, fui para a Premier e agora estou na Copa. É tentar manter os pés no chão".

Vinicius Junior deve ser titular da seleção brasileira na Copa do Mundo?

Resultado parcial

Total de 3127 votos