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

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.

Anitta vira a Shakira da Conmebol e desta vez cantará solo na Libertadores

Anitta, durante show de abertura da final da Libertadores em 2019 no Peru - Raul Sifuentes/Getty Images
Anitta, durante show de abertura da final da Libertadores em 2019 no Peru Imagem: Raul Sifuentes/Getty Images

Colunista do UOL

23/11/2021 23h16

Anitta será a atração principal no pré-jogo da final da Libertadores entre Palmeiras e Flamengo, neste sábado (27), em Montevidéu, às 17h (de Brasília). Será a segunda vez da cantora em uma decisão do torneio da Conmebol, mas desta vez a apresentação será solo. Anitta confirmou a informação em entrevista ao podcast Podcats.

Em novembro de 2019, antes de Flamengo 2 x 1 River Plate na finalíssima da Libertadores no estádio Monumental de Lima, no Peru, Anitta subiu ao palco ao lado dos argentinos Fito Páez e Tini Stoessel e do colombiano Sebastián Yatra. Também se apresentaram Gabriel o Pensador, com a camisa e música do Flamengo, e os argentinos da banda Turf, uniformizados de River.

Com uma final 100% brasileira, a direção da Conmebol optou por repetir Anitta, hoje uma das artistas brasileiras de maior alcance internacional e que vai se tornando a preferida da confederação sul-americana para seus eventos.

Além da final da Libertadores de dois anos atrás, Anitta se apresentou em julho de 2019 na cerimônia de encerramento da Copa América, no Maracanã, ao lado do porto-riquenho Pedro Capó. Relação parecida com a que a Fifa teve com a colombiana Shakira, que apareceu em três Copas do Mundo seguidas —2006, 2010 e 2014.

A Conmebol tentou com Ifab (conselho que regula o futebol) e Fifa aumentar de 15 para 25 minutos o tempo de intervalo de suas finais em Montevidéu, para que pudesse realizar os shows no intervalo, como é feito no Super Bowl, a decisão da NFL, liga de futebol americano nos EUA — o que significaria espetáculos mais longos e com mais apresentações. Mas a Ifab rejeitou, alegando que poderia ser prejudicial à saúde dos atletas um período mais longo de paralisação entre os tempos —risco de lesões musculares.

Na decisão da Sul-Americana do sábado ado (20), na vitória por 1 a 0 do Athletico sobre o Red Bull Bragantino, a banda de forró Barões da Pisadinha fez o show do pré-jogo no estádio Centenário.