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

Marcel Rizzo

Mundial de Clubes vira problema na Fifa e pode chocar data com Brasileiro

Bayern de Munique venceu o PSG e conquistou a Champions League 2019/20  - GettyImages
Bayern de Munique venceu o PSG e conquistou a Champions League 2019/20 Imagem: GettyImages

Colunista do UOL

19/09/2020 04h00

O presidente da Fifa, Gianni Infantino, confirmou nesta sexta-feira (18) o inevitável: o Mundial de Clubes 2020, marcado para dezembro no Qatar, está adiado. As Américas, do Sul, do Norte e Central, e a Oceania não teriam times a indicar nesta data porque seus torneios não terminariam a tempo. A Fifa trabalha para realizá-lo no início de 2021, entre fevereiro e abril, mas há vários problemas a superar, de datas a participantes.

Por que a Fifa simplesmente não o cancela? Porque não pode. Há um contrato assinado com o grupo chinês de venda online Alibaba até 2022 para patrocínio exclusivo. A edição 2020 consta no acordo e seria a última no formato atual, com sete participantes, dando espaço para o super Mundial projetado pela Fifa, com 24 clubes, que seria em 2021 na China, mas já adiado por causa da pandemia do coronavírus. Este torneio não tem qualquer previsão de data, avisou Infantino.

Há também gordos contratos de direito de transmissão que foram vendidos pela Fifa e reados por terceiros a diversas emissoras e plataformas de streaming espalhados pelo mundo. A entidade poderia até argumentar causa de força maior, devido à covid-19, mas correria o risco de sofrer diversos processos judiciais incômodos.

O problema é que a Fifa está de mãos atadas. Se sugeriu, via Ásia, fevereiro. A Libertadores já terá terminado, em janeiro, mas a Conmebol avisou que o Campeonato Brasileiro, por exemplo, estará em sua reta final, portanto se o campeão continental for daqui esse time teria problemas em viajar por sete dias, no mínimo, ao Qatar.

Março de 2021 tem data-Fifa, com jogos de seleções entre 22 e 30, o que já bloqueia quase um terço do mês. Abril coincide com a reta final da Liga dos Campeões na Europa. E se o Bayern de Munique estiver nessa?

Mas não é só data que faz o Mundial de Clubes ser um quebra-cabeça para a Fifa. A Oceania cancelou a sua Liga dos Campeões definitivamente, ou seja, não terá campeão para indicar. Poderia ser aberta uma exceção para indicação, mas nunca é o ideal. O atual campeão, o Hienghene Sport, da Nova Caledônia, já estava eliminado da edição 2020, que parou nas quartas, com oito participantes. Muito time para a confederação indicar um.

A Concacaf, entidade que reúne os times das Américas do Norte, Central e Caribe, nem tem data para reiniciar o seu torneio, que parou também nas quartas de final. Esse, porém, é provável que tenha já um campeão entre fevereiro e abril de 2021.

Por enquanto, só dois dos sete times estão classificados para o Mundial que ninguém sabe quando vai acontecer: o Bayern de Munique, campeão europeu, e o Al-Duhail, vencedor do qatariano e que representaria o país-sede. A África definirá agora em outubro e a Ásia no comecinho de dezembro.