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

Felipe Melo diz que Gattuso pediu trégua após 'treta': 'Já me bateu demais'

Felipe Melo e Gattuso - Andreas Solaro/AFP e AFP PHOTO / Marcello PATERNOSTRO
Felipe Melo e Gattuso Imagem: Andreas Solaro/AFP e AFP PHOTO / Marcello PATERNOSTRO

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

15/12/2021 14h38

O meio-campista Felipe Melo, anunciado no início da semana como reforço do Fluminense, revelou uma 'frustração' em sua agem pela Itália. O jogador contou que, quando atuava pela Juventus, quase levou uma cotovelada de Gattuso, então no Milan. O brasileiro disse que, a partir de então, ou a ser mais duro com o adversário, até que ouviu um pedido de trégua do italiano - o que decepcionou Felipe Melo.

"Eu respeito muito o Gattuso. Uma vez, jogamos Milan x Juventus, no San Siro, e ele tentou me dar uma cotovelada. Aí, a gente discutiu, eu empurrei ele. Depois, a gente sai e eu falo: 'Sempre que a gente jogar agora vai dar ruim porque você tentou me dar uma cotovelada', contou Felipe Melo em entrevista ao podcast "Palumbada Neles".

"Depois, jogamos mais umas três, quatro vezes e ele falou: 'Para, você já me bateu demais'. Eu falei: 'Para?' Eu esperava mais dele neste sentido de combate. O Gattuso ganhou tudo, é um ídolo no futebol, uma bandeira no Milan, mas estou falando no mano a mano", continuou.

Felipe Melo comparou a reação de Gattuso à de outros rivais conhecidos pelo futebol mais duro que teve na Itália, como Daniele De Rossi, da Roma, e Marco Materazzi, da Inter de Milão. O brasileiro contou que estes nunca fugiram da briga.

"O De Rossi, por exemplo, quando era jogo contra a Roma, sempre tinha porrada minha e dele. Todo jogo. O bagulho era doido. Acabava o jogo, e a gente conversava. Começava outro e o 'cacete cantava'. Mesma coisa com o Materazzi. Tanto que o Materazzi falou que eu tinha que jogar na Inter. Eram os caras que enfrentavam, mas não 'arregavam'", completou.

Seis anos na Itália

Ao todo, em três clubes, Felipe Melo jogou seis anos na Itália. Primeiro, entre 2008 e 2009 na Fiorentina. Lá, ele chamou a atenção da Juventus, onde atuou entre 2009 e 2011. Após uma agem marcante no Galatasaray, o meio-campista voltou ao futebol italiano, onde defendeu a Inter de Milão, entre 2015 e 2016.