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

Protocolo da Uefa prevê realização de partidas de clubes com casos de covid

Estádio da Luz, casa do Benfica e sede da final da Liga dos Campeões 2019-20 - SOPA Images/LightRocket via Getty Images
Estádio da Luz, casa do Benfica e sede da final da Liga dos Campeões 2019-20 Imagem: SOPA Images/LightRocket via Getty Images

Do UOL, em São Paulo

10/08/2020 04h00

Divulgado pela Uefa na última semana, o protocolo de segurança sanitária das retas finais da Liga Europa e Liga dos Campeões antecipou possíveis incidentes de contaminação e estabeleceu que jogos poderão ser realizados mesmo diante da confirmação de casos de covid nas delegações participantes. Para isso, basta que cada equipe tenha pelo menos 13 jogadores disponíveis, sendo um deles obrigatoriamente goleiro.

Essa norma só não será válida caso as autoridades sanitárias locais (Portugal) determinem o cumprimento de quarentena por um grande grupo de jogadores ou toda uma delegação. Neste caso, os clubes ainda teriam a alternativa de inscrever novos jogadores para o prosseguimento da competição, desde que estes estejam regularizados nas federações nacionais correspondentes a cada equipe.

Se ainda assim a realização da partida não for possível, bem como seu adiamento, o clube (ou os clubes) em questão serão decretados derrotados por 3 a 0 e, consequentemente, eliminados da competição europeia.

Atlético de Madri registra dois casos positivos de covid

O Atlético de Madri divulgou ontem (9) que dois membros de sua delegação testaram positivo para covid-19. O clube não informou se são atletas ou fazem parte da comissão técnica. Ambos, no entanto, já estão em isolamento domiciliar e o restante da delegação realizará novos testes na manhã de hoje (10).

O clube madrilenho embarcaria hoje (10) a Lisboa, onde entrará em campo pelas quartas de final da Liga dos Campeões contra o RB Leipzig na quinta-feira (13), às 16 horas (de Brasília), no Estádio José Alvalade. Vale lembrar que toda a reta final (Final Eight) da principal competição europeia será disputada na capital portuguesa.