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

Como Neto e Felipe Melo deram "basta à guerra" e fizeram as pazes ao vivo

Neto e Felipe Melo fazem as pazes ao vivo com ajuda de Vanderlei Luxemburgo - Reprodução/Band
Neto e Felipe Melo fazem as pazes ao vivo com ajuda de Vanderlei Luxemburgo Imagem: Reprodução/Band

Gabriel Vaquer

Colaboração para o UOL, em Aracaju

01/08/2020 04h00

Quem assistiu à edição de sexta-feira (31) do programa "Os Donos da Bola" se surpreendeu com a participação do jogador Felipe Melo, do Palmeiras, na atração de Neto na Band. Ambos já trocaram várias farpas publicamente e pareciam que não iriam fazer as pazes nunca. Mas isso aconteceu, e teve uma ajuda primordial do atual técnico alviverde, Vanderlei Luxemburgo.

Segundo apurou a reportagem do UOL Esporte, Luxemburgo e sua equipe de assessoria prometeram intermediar a paz entre o apresentador e ídolo do Corinthians com o jogador palmeirense. O técnico tem boa amizade com Neto e achava que ambos tinham uma visão muito parecida do mundo para ficarem brigados por tanto tempo - pelo menos desde 2017, quando Felipe chegou no Palmeiras.

Foi o técnico e a assessoria pessoal, juntamente também com a assessoria do Palmeiras, que articularam o encontro depois de algum tempo. Pesou também a vontade de Felipe Melo de colocar o assunto debaixo da terra e resolver de uma vez por todas, até por ter muitos amigos em comum com o ex-jogador corintiano.

A situação também a por uma relação melhor do programa de Neto com a direção do Palmeiras. Maurício Galiotte, presidente do clube, entende que a atração pode falar o que quiser sobre o Palmeiras, contanto que sejam críticas ao campo e bola, o que vem acontecendo nos últimos meses na visão palmeirense.

Outro nome que também ajudou bastante foi o ex-jogador e atual executivo do Palmeiras, Edu Dracena. O ex-zagueiro tem uma boa amizade com Neto e se dá bem com Felipe Melo e o presidente Galiotte. Dracena achou importante resolver essa questão com um programa esportivo que é bastante visto na TV aberta.,

Na produção de "Os Donos da Bola", as pazes de Neto com Felipe Melo foram comemoradas, porque significa um ponto interessante de luz para resolver questões com outros clubes que vetam participações. É o caso do São Paulo, mas na visão dos bastidores, o Tricolor só terá uma relação tranquila com Neto após o fim da gestão de Leco no clube.

Atualmente, o "Os Donos da Bola" marca audiência na casa dos 2 a 3 pontos de Ibope na Grande São Paulo. A atração de Neto tem recuperado os números depois da volta do futebol após a paralisação de quatro meses devido a pandemia do novo coronavírus.