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

Danilo Lavieri

REPORTAGEM

Texto que relata acontecimentos, baseado em fatos e dados observados ou verificados diretamente pelo jornalista ou obtidos pelo o a fontes jornalísticas reconhecidas e confiáveis.

Quedas de Santos e Fluminense aliviam pressão de "gringos" na Conmebol

Presidente da Conmebol, Alejandro Dominguez concede entrevista antes de sorteio da Libertadores e da Copa Sul-Americana - Pedro Ivo Almeida/UOL Esporte
Presidente da Conmebol, Alejandro Dominguez concede entrevista antes de sorteio da Libertadores e da Copa Sul-Americana Imagem: Pedro Ivo Almeida/UOL Esporte

Receba os novos posts desta coluna no seu e-mail

Email inválido

Não dá para dizer que a Conmebol comemorou, mas as eliminações de Fluminense e Santos, nas quartas de final de Libertadores e Sul-Americana, respectivamente, aliviaram a pressão que a entidade que cuida do futebol sul-americano sofre por mudanças no formato de suas competições.

Segundo dirigentes revelaram ao blog, Alejandro Domínguez, presidente da Conmebol, tem sido interpelado em várias ocasiões por times de outros países questionando o domínio dos mesmos países nos últimos anos.

Caso os brasileiros estivessem classificados, dos oito semifinalistas dos dois torneios, sete seriam do mesmo país. Como isso não aconteceu, do total de vagas, cinco levam a bandeira brasileira. Na Libertadores, Flamengo, Palmeiras e Atlético-MG ficam ao lado do Barcelona, do Equador. Na Sul-Americana, Red Bull Bragantino e Athletico disputarão com Libertad, do Paraguai, e Peñarol, do Uruguai.

O excesso de brasileiros já foi um tema discutido desde o ano ado, também por causa da final entre Palmeiras e Santos na Libertadores. Algumas federações abriram conversas com a Conmebol para discutir a possibilidade de regras que impossibilitariam que isso acontecesse, como já foi feito no ado quando o sorteio era orientado a colocar times dos mesmos países para se enfrentarem antes da decisão.

A questão é que com o aumento da competição, como já mostrou Marcel Rizzo, blogueiro do UOL, o número de representantes do Brasil e da Argentina dispararam e praticamente inviabilizam qualquer barreira no regulamento.

O entendimento da Conmebol também é de que a Libertadores e a Sul-Americana estão tendo sucesso no novo modelo e que é necessário dar tempo para que os países se acostumem. Também há o entendimento que é natural que brasileiros e argentinos dominem a competição por conta de sua força financeira.

Além disso, o novo formato aumentou o número de datas, subiu o valor dos patrocínios, dos direitos de televisão e, consequentemente, da premiação, o que também gera pagamentos mais gordos para todos os participantes.

Siga também as opiniões de Danilo Lavieri no Twitter e no Instagram

Errata: este conteúdo foi atualizado
Diferentemente do que foi informado, Libertad é um clube do Paraguai, e não do Uruguai. O erro foi corrigido.