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

Personal de Modric revela segredo da forma física do meia do Real Madrid

Luka Modric foi eleito o melhor em campo na partida de volta das quartas de final da Champions League contra o Chelsea - Denis Doyle - UEFA/UEFA via Getty Images
Luka Modric foi eleito o melhor em campo na partida de volta das quartas de final da Champions League contra o Chelsea Imagem: Denis Doyle - UEFA/UEFA via Getty Images

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

15/04/2022 19h07

Durante entrevista ao canal canal croata 'Jutarnji', Vlatko Vucetic, personal trainer do meia do Real Madrid, revelou os segredos de Luka Modric, que está surpreendendo a todos com sua forma física nas últimas temporadas.

No auge de seus 36 anos, e fundamental nos dois duelos de mata-mata - contra PSG e Chelsea - na Liga dos Campeões da UEFA, Modric mostra estar em uma incrível forma. Para muitos, o croata está melhor agora do que quando foi eleito o jogador do ano pela Fifa em 2018.

Por trás de todo esse sucesso há muito trabalho, de acordo com o personal do meia do Real Madrid. "A chave para o sucesso é que mantemos Luka em forma constantemente, ele está sempre entre 85 e 100 por cento, o que pode ser visto no fato de que ele pode ar não apenas 90, mas também 120 minutos de alta intensidade", disse Vlatko.

Isso pode ser visto principalmente no duelo diante do Chelsea, que selou a classificação do Real Madrid às semifinais da principal competição europeia. O croata teve papel fundamental no gol de Rodrygo, que saiu no primeiro tempo da prorrogação. "Esta forma permite que ele seja um dos jogadores com menos lesões", acrescentou.

Para o professor da Faculdade de Cinesiologia da Universidade de Zagreb e chefe do Centro de Diagnóstico Esportivo, que já trabalha com Modric há algum tempo, fazendo isso à distância, esse trabalho é fundamental para o astro do Real: "Antes de cada treino e partida, ele faz meia hora com uma faixa elástica. Seus músculos ficam mais elásticos, como se ele tivesse molas por todo o corpo. E, claro, sempre faço uma recuperação após a partida".

E mais, Modric ainda está liberado para tomar aquela cervejinha depois de cada partida - na fase atual, a cada vitória. "Beber uma ou duas cervejas depois de um jogo pode ser uma coisa positiva, porque uma baixa porcentagem de álcool relaxa, e a cerveja também tem vários ingredientes positivos", completou.