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

Fifa pergunta às Confederações qual a melhor data para o Mundial de Clubes

Taça do Mundial de Clubes da Fifa, torneio que será adiado em 2020 - GettyImages
Taça do Mundial de Clubes da Fifa, torneio que será adiado em 2020 Imagem: GettyImages

Colunista do UOL

20/10/2020 16h23

A Fifa entrou em contato com as seis confederações filiadas para tratar do Mundial de Clubes que seria realizado em dezembro no Qatar, mas que por causa da pandemia terá que ser adiado. Eram duas perguntas: quando (e se) seu torneio continental terminará e quando poderia ser a melhor data para realização da competição nos primeiros meses de 2021.

A federação internacional tem problema para cancelar o torneio por causa de acordo de patrocínio, que prevê a realização da competição com sete clubes por pelo menos mais uma temporada — há um contrato de exclusividade com a empresa de comércio online chinesa Alibaba. Mas quando realizá-lo?

Há dificuldades sérias. Por exemplo: a Oceania não terá campeão nesta temporada. O continente decidiu cancelar definitivamente sua Liga dos Campeões, antes das quartas de final, e a Fifa teria que fazer uma indicação portanto, o que pode colidir com o regulamento do Mundial.

A Concacaf (Confederação das Américas do Norte, Central e Caribe) avisou que terminará seu torneio, também nas quartas de final, em uma "bolha", como fizeram a Uefa na Liga dos Campeões e a NBA — uma sede fixa. O vencedor deve sair em dezembro, igual a Ásia (que também definirá sua competição em locais fixos). A África conhecerá seu campeão continental em novembro.

Na América do Sul, a Libertadores só terminará em 23 de janeiro. A Fifa, portanto, só poderá pensar em um Mundial de Clubes após essa data. Quando? Se cogitou fevereiro e março, mas a Uefa é contra porque atrapalharia os campeonatos nacionais — o Bayern de Munique se classificou para o Mundial ao vencer a Liga dos Campeões. O Al-Duhail, campeão qatariano, também está qualificado.

No momento a direção da Fifa não tem ideia de quando poderá ser disputada a competição, que seria a última no formato com sete clubes (os seis campeões continentais, mais um representante do país-sede). A partir de 2021, na China, a Fifa planejava um Super Mundial quadrienal, com 24 participantes, 12 europeus, mas a pandemia do coronavírus fez a entidade ser obrigada a adiar a competição para data incerta.