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

Melody briga com Anitta e chama cantora de 'senhora de quase 40 anos'

Colaboração para Splash, em São Paulo

17/07/2022 10h33Atualizada em 17/07/2022 21h49

Ao que tudo indica, o desentendimento entre Anitta e Melody está longe de acabar. Após ter um tuíte em que diz que não apoia o PT compartilhado por Jair Bolsonaro, Anitta foi criticada por seus seguidores e se defendeu citando Melody como exemplo de "engajamento".

"Isso se chama fale bem ou fale mal, mas fale de mim. Não vê a Melody? Vocês só falam mal dela, nada que ela faz é de fato sério e profissional. Mas ela consegue um ótimo engajamento e se mantém no mercado por criar tretas", escreveu no Twitter.

Pouco depois, a cantora mais nova rebateu Anitta em uma série de stories no Instagram. "Onde ela vai, fala de mim. Na televisão, no Twitter. Depois, eu que fico arrumando picuinha com ela", começou.

"Eu nunca falo mal dela e ela falou que o meu trabalho não era profissional. Quem é que está no Top 1 Brasil agora? Ela tava no Top 1 Global, mas cade a música dela? Saiu do mapa. Aquilo ali era muito dinheiro investido", rebateu Melody.

"O meu trabalho não tem isso de adicionar dinheiro. É tudo natural", acrescentou a artista que, apesar de citar o Top 1 no Spotify Brasil, ainda não atingiu o 1º lugar na plataforma de streaming.

'Quem tem boca fala o que quer'

No Twitter, Melody continuou a discussão e disse que colocar sua carreira em briga política era falta de assunto, chamando a cantora de 29 anos de "senhora de quase 40 anos".

Está nervosa porque organicamente é difícil chegar no topo, né? Quem tem boca fala o que quer, mas o meu talento é maior que tudo isso. Feio mesmo é uma senhora de quase 40 anos colocar uma adolescente de 15 anos em discussão de cunho político para engajar. Outro detalhe: está tão grande lá fora, que tem tempo para postar no Twitter sobre assuntos que não tem respaldo algum para comentar?

A cantora continuou: "Depois que você viu que eu posso ser tão grande quando você, faz de tudo para desmerecer o meu trabalho. Mas é assim mesmo, às vezes você não consegue brilhar sozinho e tem medo do que pode ser maior que você quando você não rende mais."

Anitta e Lula

Depois de declarar voto para o ex-presidente Luiz Inácio Lula da Silva (PT), Anitta disse que não é petista e só irá apoiar o pré-candidato do partido para que Jair Bolsonaro (PL) não seja reeleito.

A cantora pediu que o PT não use seu nome e imagem em campanhas, apesar dela própria ter publicado nesta semana uma imagem com os símbolos do partido. "Atenção, candidatos do PT, atenção, partido PT. Eu NÃO SOU uma apoiadora do PT e NÃO SOU petista", escreveu no Twitter.

Anitta ainda disse que, depois de "muitas pesquisas", concluiu que Lula é a pessoa com maiores chances de derrotar o atual presidente da República nas eleições de outubro.

"E o que vou fazer daqui em diante é usar minhas plataformas no que eu puder ajudar para trazer mais visibilidade a ele com a propósito de não termos novamente 'Voldemort' na Presidência", publicou a artista.