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

Vini Jr. elogia Benzema e minimiza polêmica: 'Tudo no Real repercute'

Vinicius Jr comemora gol do Real Madrid sobre o Levante pelo Campeonato Espanhol - REUTERS/Sergio Perez
Vinicius Jr comemora gol do Real Madrid sobre o Levante pelo Campeonato Espanhol Imagem: REUTERS/Sergio Perez

Colaboração para o UOL, em São Paulo

22/02/2021 11h43

O atacante Vinícius Jr., do Real Madrid, conviveu com uma polêmica envolvendo seu companheiro de equipe Benzema no fim do ano ado. O jogador francês teria pedido a Mendy para não tocar a bola para o brasileiro durante conversa no intervalo de um jogo contra o Borussia Monchengladbach, na primeira fase da Liga dos Campeões.

Depois de o Real Madrid e de Benzema colocarem panos quentes na questão, Vinícius Jr. afirmou que as pessoas não sabem o que aconteceu e disse que sua relação com o atacante francês é muito boa.

"A minha relação com o Benzema é muito boa. Ele me defende, sempre me ajuda. Ele faz de tudo para eu jogar mais vezes. As pessoas de fora não sabem o que realmente aconteceu. No Real Madrid, o mínimo que sai causa muita repercussão", declarou em entrevista ao TNT Sports.

Outro companheiro elogiado pelo atacante brasileiro foi Hazard, com quem ele disputa posição. Vini Jr. disse que jogar ao lado do belga é a chance de realizar um sonho.

"Fora de campo, é um cara muito gente boa. Ele gosta muito dos brasileiros. Fico feliz em poder realizar o sonho de jogar ao lado do Hazard. É um cara que eu sempre acompanhava na TV e tentava repetir os lances que ele fazia. Fico muito feliz de disputar posição com ele", continuou.

Menos dribles

Vinícius Jr. ainda falou de uma mudança de característica em seu jogo. O atacante entende que a falta de torcida cria um ambiente menos propício para dribles e jogadas de efeito.

"Não acho que estou arriscando menos. Talvez, eu esteja mais maduro, escolhendo as jogadas corretas, tentando ajudar a equipe de outra maneira. A torcida também faz falta, ela me empurra para poder arriscar jogadas e ir para cima. Sem torcida, a gente 'cadencia' mais os jogos", completou.

Liga dos Campeões

O Real Madrid volta a campo amanhã, pelo jogo de ida das oitavas de final da Liga dos Campeões da Europa. Os espanhóis enfrentam o Atalanta (ITA), em Bérgamo, às 17h.