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

Atlético-MG

Keno aparece no "um contra um" e recebe elogios de auxiliar no Atlético-MG

Keno, entrou no segundo tempo, sofreu o pênalti e deu a assistência no gol da vitória - Pedro Souza/Atlético-MG
Keno, entrou no segundo tempo, sofreu o pênalti e deu a assistência no gol da vitória Imagem: Pedro Souza/Atlético-MG

Do UOL, em Belo Horizonte

14/09/2020 04h00

O atacante Keno teve participação importante na noite do último domingo, pelo Atlético-MG. Apesar de ter começado a partida contra o Red Bull Bragantino no banco, o jogador entrou no segundo tempo e participou de boas jogadas ofensivas do Galo, a principal delas no gol que valeu os três pontos e a vitória por 2 a 1 a favor dos mineiros. Sem Sampaoli, suspenso, Jorge Desio foi o responsável por comandar o time alvinegro, e gostou do que viu.

Em suas últimas apresentações, Keno vinha sendo questionado por causa do insucesso em suas jogadas, principalmente quando tentava romper as linhas nas jogadas individuais ou tomando uma última decisão errada. Desta vez, além da assistência para Savarino, no final da partida, Keno também teve boa participação na tabelinha com Arana, antes de sofrer o pênalti (desperdiçado por Eduardo Sasha).

"É um jogador muito bom. Hoje mostrou o que pode fazer. Em outro jogo não logrou, mas temos muita esperança porque é um bom jogador", comentou Jorge Desio.

Além de Keno, o auxiliar de Sampaoli também comentou sobre a entrada de Mailton no time do Galo. Antes da partida, surpreendeu (o que já não é novidade) a escalação alvinegra com três zagueiros e dois laterais direito. Enquanto Guga ocupou mais a região central, Mailton atuou como um ponta direita, descendo com frequência e explorando bastante os espaços pelo lado do campo.

"Mailton fez um bom jogo, no primeiro tempo muitas ações ofensivas pelo time foram pelo lado dele. Podíamos ter feito o segundo gol por um cruzamento dele. Creio que foi bem pensado (a escalação) e o jogo saiu como Jorge Sampaoli e nós, que somos os colocadores, havíamos pensado que poderia sair", acrescentou.

Com o resultado, o Galo subiu para o segundo lugar da tabela, agora com 18 pontos, dois a menos que o líder Internacional. Como só tem o Brasileirão pela frente, agora, pela primeira vez em sete semanas, o Atlético terá uma semana livre para treinar. Desta forma, o próximo compromisso do Galo será apenas no sábado, dia 19, contra o Atlético-GO.

Atlético-MG