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

Notícias em primeira mão dos bastidores do futebol, informações exclusivas sobre o seu time, novidades do mercado da bola e o melhor do jornalismo esportivo em um só lugar. Só para s UOL!

Corinthians agiliza proposta para segurar Danilo Avelar e espantar assédio

Com gols e boas atuações, Danilo Avelar conquistou torcida e diretoria do Corinthians. Clube se apressa para não perdê-lo - Adriana Spaca/Estadão Conteúdo
Com gols e boas atuações, Danilo Avelar conquistou torcida e diretoria do Corinthians. Clube se apressa para não perdê-lo Imagem: Adriana Spaca/Estadão Conteúdo

Do UOL, em São Paulo e Belo Horizonte

26/03/2019 04h00

O Corinthians se apressa para segurar Danilo Avelar, desejado por clubes brasileiros e do exterior. A cúpula alvinegra decidiu que enviará proposta oficial ao Torino, da Itália, pelo lateral esquerdo nesta semana. A De Primeira apurou que o clube paulista preparou uma oferta parcelada para exercer a prioridade de compra, estipulada pelos italianos em 1,5 milhão de euros (R$ 6,5 milhões).

Avelar virou o novo xodó da torcida corintiana. Ele superou críticas ao se destacar sob o comando de Fábio Carille. Neste ano, o lateral entrou em campo 16 vezes e marcou quatro gols, sendo três deles de cabeça. O camisa 35 só não balançou mais as redes do que Gustagol, que fez oito. No ano ado, Avelar então perseguido pela torcida marcou dois gols em 30 jogos. (Por Samir Carvalho)

Santos: Sampaoli desiste de ser "vizinho de Pelé" para morar na praia

O técnico Jorge Sampaoli está em um relacionamento sério com a praia de Santos. Após morar os primeiros meses em um hotel no Gonzaga, o argentino se mudou para o condomínio Morro Santa Terezinha, onde morou até mesmo o Rei Pelé por um tempo. No entanto, o treinador ficou menos de uma semana no local e pediu para voltar para a orla. Sampaoli costuma correr na praia e também joga futevôlei com moradores locais. Hoje o argentino está instalado em uma cobertura próxima ao canal 2 com seus quatro cachorros da raça Border Collie. (Por Eder Traskini)

Palmeiras adota silêncio e evita holofotes após provocação de Olim

O Palmeiras não vai se manifestar sobre as declarações do presidente do Tribunal de Justiça Desportiva de São Paulo (TJD-SP), Antônio Olim, que disse que vai enviar um lenço para o clube "parar de chorar" após a polêmica envolvendo o VAR no jogo de ida das quartas de final do Campeonato Paulista, contra o Novorizontino. Após várias trocas de farpas com Olim e o TJD no ano ado, decorrentes da acusação de que houve interferência externa na arbitragem na final contra o Corinthians, o clube entende que é melhor ficar em silêncio agora e não dar holofotes nessa questão. Em 2018, o Palmeiras fez várias críticas públicas às decisões do TJD durante as investigações do processo que pedia a impugnação da final do estadual. (Por Leandro Miranda)

Representante do Barça assiste ao jogo de Martinelli contra o SPFC

Destaque neste Campeonato Paulista, Gabriel Martinelli chamou a atenção até de um dos clubes mais badalados do mundo. Na abertura do mata-mata das quartas de final do estadual, no domingo, no Morumbi, o empresário do jovem, Marcos Casseb, teve nas tribunas do estádio a companhia de André Cury, representante do Barcelona. Autor de seis gols em 13 partidas do Ituano neste estadual, o garoto, de 17 anos, também teve um rendimento positivo durante a Copa São Paulo de Futebol Júnior. Segundo pessoas ligadas ao jogador, diversos clubes do Brasil e do exterior já sondaram a possibilidade de contratá-lo. (Por José Eduardo Martins)

Atrasos de imagem causam divergência entre agentes e Atlético-MG

Atlético-MG e agentes de pelo menos sete jogadores do elenco divergem sobre atrasos de direitos de imagem. Parte do grupo não recebe a quantia que é considerada um complemento do salário há dois meses. Por meio da assessoria de imprensa, o clube diz ter recurso para pagamento, mas que há pendências por erros dos atletas na emissão de notas fiscais. Os empresários, que pediram sigilo à De Primeira, alegam que a diretoria já deu diversos argumentos sobre o assunto, entre eles, que há "erro no sistema" do próprio clube. Há jogador que precisou cancelar notas fiscais por mais de uma vez por não receber os pagamentos dentro do prazo estabelecido. (Por Thiago Fernandes)

De "férias", Valdívia vira garoto-propaganda de academia de Sasha no RS

Sem chance no Inter e devolvido pelo Al-Ittihad (Arábia Saudita), Valdívia está sem jogar há mais de quatro meses. Enquanto não se acertou com clube algum, o meia-atacante de 24 anos aproveita o tempo em Porto Alegre "de férias". Entre eventos familiares e cultivo à forma física, ele virou "garoto-propaganda" da academia de outro atleta: Eduardo Sasha. O empreendimento na capital gaúcha tem o santista como sócio e foi "adotado" pelo #PokoPika, que abusa do bom humor para promover o local nas redes sociais. Enquanto isso, o Colorado, clube com o qual tem vínculo até o fim do ano que vem, não tem definição sobre seu futuro. (Por Marinho Saldanha)