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

Palmeiras

Repórter aceita desculpa 'olho no olho' de Abel: "Minha mãe ia atrás dele"

 Abel Ferreira durante Palmeiras x Athletico-PR pela Libertadores no Allianz Parque - Marcello Zambrana/AGIF
Abel Ferreira durante Palmeiras x Athletico-PR pela Libertadores no Allianz Parque Imagem: Marcello Zambrana/AGIF

Do UOL, em São Paulo

04/10/2022 17h12

O repórter Guilherme Gonçalves, 22, da TV Litoral News, recebeu e aceitou um pedido de desculpas do técnico Abel Ferreira, do Palmeiras, nesta terça-feira (4). Guilherme foi o repórter a quem o português deu resposta atravessada na entrevista coletiva após a vitória sobre o Botafogo ontem (3).

"Ele fez uma videochamada comigo, pois disse que queria falar olho no olho", contou Guilherme ao UOL Esporte. "Ele estava tranquilo. Falou que não entendeu direito a pergunta e que já chegou estressado com a arbitragem na coletiva", continuou.

O jornalista garante que não ficou envergonhado ou estressado com a resposta, mas que sua mãe, Thaissa, ficou nervosa. "Ela queria saber se ele tinha um perfil oficial [em alguma rede social], porque queria falar com ele. Eu já falei para ela, 'mãe, deixa isso para lá'", contou Guilherme, entre risos.

Na sala de coletivas do Engenhão, colegas também ficaram contrariados e disseram a Guilherme que ele deveria ter rebatido Abel. "Eu fiz uma pergunta para ele falar. E por mais que eu espere uma certa liturgia do cargo (de treinador), eu não estava lá para debater com ele", explica ele, dizendo porque não falou nada.

"Eu fui tentar elogiar o time, porque a gente sabe como ele é, para dar uma amaciada, mas ele só captou a palavra 'expulsão'. Dali para frente, ele diz que, com a cabeça quente, não escutou mais nada", contou o repórter.

Não foi o primeiro encontro

Esse não foi o primeiro encontro de Abel e Guilherme. Em novembro de 2021, em Montevidéu, o repórter fez uma pergunta ao treinador sobre qual caminho seria melhor para vencer o Flamengo na decisão da Libertadores: se fechado, como o time jogara contra o Atlético-MG, na semifinal, ou se mais aberto, como fora na Supercopa do Brasil, contra o próprio Fla.

"Quando eu falei 'caminho', ele entendeu que eu estava falando sobre os confrontos do Palmeiras na Libertadores. E como já havia esse assunto na época, dizendo que o Palmeiras tinha pegado adversários fáceis, ele também respondeu meio seco", conta. "Mas naquele dia, eu consegui conversar com ele assim que acabou a coletiva e explicar", diz.

A Guilherme, Abel disse que vai se retratar publicamente na próxima entrevista coletiva. "Ele me perguntou se eu queria que ele falasse algo em público, e pedi para ele dizer que eu não fui o repórter que fez uma pergunta que ele não gostou no jogo com o Fluminense, conforme algumas páginas de palmeirenses estão dizendo", disse.

Palmeiras