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

OPINIÃO

Trajano: Abel está se perdendo pela língua solta, tem falado demais

Do UOL, em São Paulo

30/06/2021 11h23

Uma semana após as declarações do técnico Abel Ferreira que causaram grande repercussão com a cobrança por reforços em entrevista, a coluna UOL De Primeira revelou hoje que o treinador decidiu procurar media training no Palmeiras para apaziguar evitar as polêmicas.

Em sua participação no UOL News Esporte, com Marcelo Hazan, José Trajano afirma que o técnico do Palmeiras tem reclamado de barriga cheia, minimiza o media training e diz que o português está se perdendo nas próprias palavras ao falar demais nas reclamações com a arbitragem à beira do gramado e também nas entrevistas coletivas.

"Fala de barriga cheia. Se o Palmeiras reclama que não tem elenco, não tem reforços, você imagina o Atlético-GO, o Sport. O Dudu agora volta a treinar, tem talvez alguns desfalques na defesa, tem jogador que está lá e não joga porque não sabe se vai ficar ou não, bota o cara para jogar então. Ele reclama de barriga cheia e esse negócio de media training é uma cretinice que inventaram nos últimos tempos", diz Trajano.

"O Abel está se perdendo pela língua solta, olha o que eu estou dizendo. Ele é um bom técnico, chegou, ganhou títulos e tal, mas tem falado demais, tem falado demais na beira do campo e nas entrevistas pós-jogo", completa.

Na análise do jogo entre Internacional e Palmeiras no Beira-Rio, o jornalista coloca grande expectativa após a mudança de técnico no clube colorado, com a chegada de Diego Aguirre, enquanto os comandados de Abel Ferreira têm somado pontos em atuações ruins.

"É um Inter sob nova direção, esses números de jogos são um pouco para trás, o Aguirre não estava lá. O Palmeiras ganhou dois jogos na bacia das almas. O Palmeiras em termos de classificação está ótimo, terceiro lugar, mas a vitória sobre o Bahia e a vitória sobre o América-MG foi lá aos 50 e tantos do segundo tempo, contra o América-MG foi uma falha do zagueiro que deu mamão com açúcar para o Palmeiras fazer o gol e o Bahia jogou muito bem contra o Palmeira, bola na trave, e o Palmeiras conseguiu virar depois do tempo regulamentar", diz Trajano.

"Tem tudo para ser um jogo bem interessante, porque o Inter está melhorando e o Palmeiras tem um bom elenco, não está agradando, mas está bem classificado. Eu acho que pode ser o melhor jogo da rodada, muito melhor que São Paulo e Corinthians", conclui.