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

Torcedor que xingou Bolsonaro seguirá em camarote por medo de retaliação

Rogério Lemes (e) acompanhará jogos do Corinthians no camarote presidencial em Itaquera, ao lado de Andrés Sanchez (d) - Divulgação
Rogério Lemes (e) acompanhará jogos do Corinthians no camarote presidencial em Itaquera, ao lado de Andrés Sanchez (d) Imagem: Divulgação

Do UOL, em São Paulo

09/08/2019 04h00

Rogerio Lemes Coelho, o torcedor que foi detido na Arena Corinthians por xingar o presidente Jair Bolsonaro, seguirá assistindo aos jogos do Timão no camarote do estádio. Segundo apurou a De Primeira, ele foi convidado pelo presidente do Alvinegro, Andrés Sanchez, para ver os próximos quatro jogos no local, pois está com medo de retaliação dos policiais.

Mesmo assim, o advogado do torcedor estuda entrar com uma ação pedindo esclarecimentos ao Corinthians sobre o que eles chamam de "sala do terror" na Arena, local em que Rogerio alega ter sofrido agressões. O clube diz que está à disposição para responder. O torcedor ainda pedirá na Justiça afastamento dos policiais e indenização. (Por Samir Carvalho)

Santos faz consulta por Rithely, do Inter

O Santos segue em busca de um volante para repor a saída de Jean Lucas e atender ao pedido do técnico Jorge Sampaoli. O novo alvo do Peixe no mercado é Rithely, que pertence ao Sport e está emprestado ao Internacional até o final do ano. O Colorado sabe do interesse, mas ainda não foi oficial contatado. O clube gaúcho se vê protegido por contrato para permanência dele, contudo se o time paulista firmar oferta de compra, o Inter dificilmente cobrirá. Mesmo reserva e com apenas quatro jogos no Brasileiro, o atleta é considerado importante em razão da lesão de Rodrigo Dourado. No Santos ele é opção a Lucas Fernandes, meia do São Paulo que é desejo de Sampaoli, mas o Tricolor dificulta o negócio. (Por Eder Traskini e Marinho Saldanha)

São Paulo: Bruno Peres treina separado e Jucilei tira pertences do CT

Apesar de ter contrato com o São Paulo até o fim deste ano, Bruno Peres não faz parte dos planos de Cuca. Por isso, o lateral direito foi afastado do time e treina em horários alternativos. O Besiktas chegou a sondá-lo, mas acabou optando por Douglas. O atleta segue aguardando propostas. Também longe da equipe Tricolor, Jucilei preferiu não permanecer trabalhando no clube do Morumbi. O volante já retirou até seus pertences do CT da Barra Funda. (Por José Eduardo Martins)

Fla e Flu finalizam criação de empresa por Maracanã na próxima semana

Flamengo e Fluminense estão na fase final de conferência de documentos para a criação da "Fla-Flu Serviços", empresa que está sendo criada para a istração do Maracanã. A tendência é que a sociedade seja formalizada no máximo até semana que vem. O CEO será Severiano Braga, ex-funcionário rubro-negro e indicação do clube. Maria Cristina, também nome apontado pelo Fla, cuidará das finanças, enquanto o Flu discute internamente quem será o responsável pelo marketing do estádio. (Por Leo Burlá)

Inter tentará antecipar duelo da volta com Cruzeiro se perder Guerrero

O Inter entrou em contato com a Federação Peruana de Futebol para evitar que Paolo Guerrero seja convocado para os jogos contra Equador e Brasil no início de setembro. Mas caso não consiga, já tem outra alternativa para evitar o desfalque no jogo de volta da fase semifinal da Copa do Brasil. O clube gaúcho irá tentar mudar a data do segundo jogo contra o Cruzeiro, que está marcado para dia 4 de setembro. A meta vermelha é antecipar o encontro para que o peruano possa atuar. No dia 14 de agosto, data prevista para Copa do Brasil, ambos os times estão livres. (Por Marinho Saldanha)

Vaquinha para salários de colégio do Vasco atinge quase metade da meta

A "vaquinha" online criada pelo grupo de vascaínos "Guardiões da Colina" para pagar os salários atrasados dos professores do Colégio Vasco da Gama já teve 18 doações de R$ 1 mil em seu primeiro dia. Até a manhã de hoje, mais de R$ 30 mil haviam sido arrecadados da meta de R$ 70 mil. Os funcionários estão em greve por conta da situação e alegam estarem a três meses sem receber. A diretoria ainda não se manifestou se irá aceitar as doações, mas a campanha já se articulou para que, caso isso aconteça, o pagamento seja feito via sindicato dos professores do Rio de Janeiro. (Por Bruno Braz)