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

Quem é o lateral brasileiro que agradou Ancelotti e o Real quer comprar

Lateral de 18 anos se destacou nos treinos do Real Madrid e pode ser comprado - Reprodução/Instagram
Lateral de 18 anos se destacou nos treinos do Real Madrid e pode ser comprado Imagem: Reprodução/Instagram

Do UOL, em São Paulo

18/01/2023 04h00

O Real Madrid vive uma crise na lateral-direita e vê no brasileiro Vinicius Tobias uma possível solução para os problemas na posição. O jovem está emprestado junto ao Shakhtar e pode ser alvo de oferta dos espanhóis, já que a negociação envolve opção de compra.

Quem é Vinicius Tobias?

  • Um lateral-direito de 18 anos nascido em São Paulo;
  • É revelado nas categorias de base do Inter e até chegou a ser inscrito no Campeonato Gaúcho de 2021;
  • Ele sequer estreou na equipe principal do clube gaúcho porque foi contratado pelo Shakhtar em julho daquele ano;
  • O clube ucraniano pagou 6 milhões de euros (R$ 37,1 milhões na época) por Tobias;
  • A guerra entre Rússia e Ucrânia, intensificada no início de 2022, obrigou o time europeu a emprestar o brasileiro ao Real Madrid.

ei pelo momento mais difícil da minha vida, que foi encarar uma guerra na Ucrânia. Mas, claro, tive momentos maravilhosos. Consegui chegar no maior time do mundo, mas não alcancei meu objetivo ainda" Vinicius Tobias em seu Instagram

Como ele chamou a atenção na Espanha?

Tobias chegou ao clube para atuar no Castilla (time B do Real), mas os seus treinos foram muito elogiados pela comissão técnica e pelos dirigentes.

Na época, o jornal espanhol Marca noticiou que o jovem se destacava muito pela sua vocação ofensiva e era "uma esponja" — ele tem muita vontade de aprender para poder seguir no clube.

O The Guardian colocou Vinicius Tobias na lista dos 60 maiores talentos do futebol com nascimento no ano de 2004.

Ele ganhou ainda mais status no Real quando Carlo Ancelotti, técnico da equipe principal do clube, o chamou para treinar no time de cima.

O treinador escalou Tobias em um jogo de pré-temporada do time espanhol ocorrido em julho do ano ado, contra o América-MEX.

Tobias pode ser inscrito em jogos oficiais, já que Rodrygo, Vinicius Júnior e Militão receberam o aporte espanhol.

Mais sobre Vinicius Tobias:

  • Está emprestado ao Real Madrid até junho deste ano;
  • Tem contrato com o Shakhtar até 2026;
  • Já representou a seleção brasileira em diferentes campeonatos de base;
  • Foi contratado pelos ucranianos após trabalho do olheiro Jos Boto, que o considerou um "camisa 10 que atua na ala".