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

Estreia de M. Naves na Fox tem piada e cobrança: "Palmeiras poderia golear"

Mauro Naves, comentarista dos canais Fox Sports - Reprodução/YouTube
Mauro Naves, comentarista dos canais Fox Sports Imagem: Reprodução/YouTube

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

04/03/2020 21h18

Novo contratado dos canais Fox Sports, Mauro Naves estreou hoje como comentarista na transmissão da partida Tigre (ARG) 0 x 2 Palmeiras, pela primeira rodada da fase de grupos da Libertadores. A primeira participação do jornalista teve críticas ao time brasileiro no primeiro tempo, piadas, e elogios ao elenco da equipe alviverde.

No início do jogo, Mauro Naves demonstrou empolgação com a formação escolhida por Luxemburgo, com dois volantes e quatro atacantes. O gol de Luiz Adriano, com participação de Dudu e Willian no lance, confirmou a impressão do comentarista de que o treinador havia acertado na escolha.

"Maravilhoso o gol. O Dudu foi de centroavante, quase, fazer uma pressão no goleiro, que foi obrigado a se livrar da bola. Ela foi para o Willian, que tocou para o Dudu, a bola sobrou para o Luiz Adriano, que bateu para o gol. A linha de ataque montada pelo Luxemburgo funcionou", declarou.

A empolgação virou frustração com o decorrer do primeiro tempo. Ao fim dos 45 minutos iniciais, Mauro Naves afirmou que o Palmeiras estava "dando sopa para o azar".

"O Palmeiras tem futebol para golear. Mas não pode dar mole. Esse jogo já podia estar com um placar mais elástico pela qualidade dos jogadores do Palmeiras. Mas não está mostrando dentro de campo. Não pode dar sopa para o azar", disse.

Teve até piada para enfatizar o momento ruim do time brasileiro na partida.

"Téo, como chama o goleiro do Tigre?", questionou Mauro Naves.

"Marinelli", respondeu o narrador Téo José.

"Ah, é que eu não estou ouvindo o nome dele. Podia ouvir pelo menos quando ele estivesse buscando a bola na rede", brincou Mauro, completando sua piada.

Após o gol de Willian e algumas oportunidades seguidas desperdiçadas pelo Palmeiras, a análise mudou de tom. Mauro Naves avaliou que o time brasileiro tem tudo para fazer uma grande campanha na primeira fase.

"Com a vitória aqui, o Palmeiras tem grandes possibilidades de disparar na pontuação no grupo. É favorito em casa contra o Guaraní (PAR), e tem um jogo mais complicado com o Bolívar, por conta da altitude. Mas a tendência é pontuar muito", destacou.

Com o triunfo, o Palmeiras soma três pontos no Grupo B, que ainda conta com Guaraní e Bolívar (BOL). O time brasileiro volta a campo na próxima terça-feira (10), às 21h30, no Allianz Parque, contra o Guaraní.