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

Casemiro vira titular, e Vini é 1ª opção caso Neymar não jogue amistoso

Neymar recebe Vini Jr na concentração da seleção após título da Champions pelo Real Madrid - Lucas Figueiredo/CBF
Neymar recebe Vini Jr na concentração da seleção após título da Champions pelo Real Madrid Imagem: Lucas Figueiredo/CBF

Danilo Lavieri

Do UOL, em Seul (Coreia do Sul)

01/06/2022 08h14

No último treino antes do amistoso contra a Coreia do Sul, Tite promoveu Casemiro à equipe titular da seleção brasileira. O jogador, a princípio, não sairia jogando pela apresentação tardia por causa da final da Liga dos Campeões, mas o técnico contou em coletiva de imprensa hoje (1) que abriu uma exceção para o volante. Ele será escalado no lugar de Bruno Guimarães no jogo de amanhã (2) às 8h.

Essa exceção também pode ser usada para Vini Jr caso Neymar não tenha condições de jogo. O atleta do PSG deixou o gramado reclamando de dores no pé direito, o mesmo que ele já operou uma vez, e será reavaliado amanhã de manhã para ter certeza de suas condições. Se ele não puder entrar em campo, o atleta do Real Madrid é o primeiro da fila, desde que já esteja mais adaptado ao fuso horário e bem fisicamente.

"A minha primeira ideia era não usar nenhum jogador que veio da final, mas a exceção foi feita ao Casemiro em função da conversa que tive com ele, por todos os relatos que a gente teve fisicamente, por ele ter tomado todos os cuidados após o jogos", falou, para depois explicar a situação de substituir o camisa 10.

"Eu penso (para substituir o Neymar) no Coutinho ou no Vini, desde que ele tenha uma resposta boa, que ele durma bem, relate ao departamento médico e fale que está legal e bem. Caso contrário, a gente não vai colocar em risco a saúde, mesmo querendo vencer", ponderou.

Questionado se o jogador do Real era a primeira opção, ele confirmou: "Sim, é a primeira opção, até pela coerência com o último jogo dele".

Weverton também foi confirmado como o substituto de Ederson, que teve lesão na coxa esquerda. Com isso, o time deve ser o seguinte: Weverton; Daniel Alves, Thiago Silva, Marquinhos e Alex Sandro; Casemiro, Fred e Lucas Paquetá; Neymar (Vini Jr ou Coutinho), Richarlison e Raphinha.

Depois de enfrentar a Coreia do Sul, o Brasil viaja para Tóquio para enfrentar o Japão no próximo dia 6 de junho, na penúltima reunião antes da Copa do Mundo.

Veja mais sobre o estado de Neymar e notícias do futebol no UOL News Esporte: