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

Rock in Rio anuncia Post Malone, Alok e Jason Derulo no dia 3 de setembro

Rock in Rio anuncia Post Malone, Alok e Jason Derulo - Mariana Pekin/UOL
Rock in Rio anuncia Post Malone, Alok e Jason Derulo Imagem: Mariana Pekin/UOL

De Splash, em São Paulo

24/08/2021 21h14Atualizada em 24/08/2021 21h31

O Rock in Rio anunciou hoje mais novidades no lineup: Post Malone, Alok, Jason Derulo e Marshmello estão confirmados no Palco Mundo do dia 3 de setembro foram confirmados no festival, que vai ocorrer em 2022.

A organização do festival ainda anunciou que os ingressos — o Rock in Rio Card — começarão a ser vendidos no dia 21 de setembro, a partir das 19h.

Nessa etapa, os interessados em ir ao festival comprar um cartão que dará o à pré-venda ods ingressos. Ou seja, quem tiver o Rock in Rio Card vai poder escolher seu dia preferido antes da abertura das vendas gerais.

Na última quinta-feira (19), as atrações do primeiro dia do festival — dia 2 — foram anunciadas. Sepultura e a Orquestra Sinfônica Brasileira abrem o Palco Mundo juntos e serão seguidos por Dream Theater, Megadeth e Iron Maiden.

O terceiro dia de festival também já tem nomes escalados. Quem abre a noite é Iza, e depois sobem ao palco Demi Lovato de Justin Bieber — que foram as primeiras atrações a serem confirmadas pelo festival. Ainda falta uma atração para ser confirmada nessa data.

Ivete Sangalo também foi confirmada como atração do Rock in Rio e vai cantar no último dia do festival, dia 11.

Antes marcado para este ano, o Rock in Rio foi adiado para setembro de 2022. Todas as datas foram confirmadas e o público poderá acompanhar os shows nos dias 2, 3, 4, 8, 9, 10 e 11.

O evento vai acontecer no Parque Olímpico do Rio de Janeiro, na Zona Oeste da cidade.

Público dividido

Os fãs do Rock in Rio nas redes sociais tiveram reações muito diferentes.

Uma parte surtou comemorando o fato de os seus artistas preferidos estarem confirmados.

Outra parte segue brava por considerar o lineup fraco.

Os fãs da Lady Gaga não dão um descanso à organização do festival