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

OPINIÃO

Mauro: Vinicius Jr é o grande brasileiro em atividade na Europa no momento

Do UOL, em São Paulo

07/12/2021 13h23

O Real Madrid enfrenta a Inter de Milão para garantir o primeiro lugar do grupo D da Liga dos Campeões, jogo no qual um empate basta ao time que joga em casa no Santiago Bernabéu, mas não contará com Benzema, o que aumenta a responsabilidade de Vinícius Júnior, brasileiro que vem se destacando no clube merengue na atual temporada.

No UOL News Esporte, Mauro Cezar Pereira afirma que o jogador revelado pelo Flamengo é hoje o melhor brasileiro em atividade no futebol europeu e tem a seu favor o fato de o time ser treinado pelo italiano Carlo Ancelotti, que valoriza o jogo em velocidade, principal característica de Vinícius Júnior.

"Ele já é o grande jogador brasileiro em atividade neste momento e vestindo uma camisa pesada que é a do Real Madrid, tem sido muitas vezes o principal jogador do time, tem feito gols, melhorou nas finalizações, o Carlo Ancelotti é o técnico perfeito para o Vinicius porque ele gosta de jogar em velocidade, gosta de jogadores rápidos, como ele, e com esse técnico italiano ele vai atingindo a maturidade", diz Mauro Cezar.

"Não só pela presença do Ancelotti, mas também porque é a idade, o Vinicius foi vendido antes de fazer 18 anos, ele viajou para a Espanha assim que completou 18 anos, logo depois, coisa de meses, não jogou nem uma temporada nos profissionais aqui no Brasil quando era atleta do Flamengo, então a conclusão da sua formação como jogador acontece na Espanha. Muita gente fala 'ah mas ele saiu do Brasil com problemas'. Claro, ele tinha 18 anos, com 18 anos quer um jogador pronto? Não existe", completa.

O jornalista afirma que o Real Madrid já consegue compensar o investimento feito para contratar Vinícius, assim como Rodrygo, revelado pelo Santos, que também tem boas atuações, embora não seja o titular da equipe, como é o caso do camisa 20.

"Fica muito claro que tanto o Rodrygo, que também tem jogado, ainda que sem o destaque do Vinicius, mas acho que vai se destacar bastante ainda, foram dois investimentos altos do Real Madrid que vão se pagando, os 45 milhões de euros pagos ao Flamengo, uma grana excelente ainda mais para um garoto de 18 anos, já se mostraram mais do que interessantes para o Real Madrid como investimento no médio e longo prazo", diz Mauro.

"A tendência é o Vinicius se aprimorar cada vez mais, crescer cada vez mais, é um garoto muito humilde, um cara muito centrado, teve paciência para ar pela fase quando era criticado, como se já fosse um veterano", conclui.