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

Britney Spears se irrita com livro de irmã: 'Tudo foi dado de graça a ela'

Britney Spears - Reprodução/Instagram
Britney Spears Imagem: Reprodução/Instagram

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

13/01/2022 22h19Atualizada em 13/01/2022 22h19

A história da custódia de Britney Spears ainda promete novos capítulos regados à brigas familiares.

Após ver a entrevista que sua irmã mais nova, Jamie Lynn Spears, deu ao programa 'Good Morning America' para promover seu livro biográfico, a cantora de 'Toxic' foi até o Twitter dar sua versão dos fatos.

Britney disse estar com febre e não se sentindo muito bem, mas disse que essa era a única razão para 'não ligar' para as falas de sua irmã. A estrela desabafou sobre a versão que Jamie Lynn deu de sua história em uma carta aberta, apontando duas coisas que a incomodaram: "Ela falou sobre como meu comportamento estava fora de controle. Ela nunca esteve por perto por 15 anos... então por que razão ela estaria falando sobre isso se não quisesse vender um livro às minhas custas?", questionou a princesa do pop.

Britney ainda continuou: "Eu escrevi muitas das minhas músicas, ela era a criança naquela época. Ela nunca teve que trabalhar por nada. Tudo foi sempre dado de graça a ela!", disse a cantora. A estrela falou também sobre a relação entre ela e seus familiares. "Eu sempre fui a melhor pessoa. Eles todos conseguiram fazer o que queriam e brincar comigo enquanto eu me sentei e assisti. Mas agora isso parece piada... a última coisa que eu faria era pedir pelas coisas que foram dadas a ela! Então sim, eles arruinaram os meus sonhos" disse ela, acrescentando em outra parte: "Minha família arruinou um bilhão porcento dos meus sonhos e tenta fazer com que eu pareça louca mesmo estando ardendo em febre, não conseguindo sair da cama. Minha família ama me colocar para baixo, e me machucam sempre, então estou enojada deles".

A cantora mandou um recado para a irmã mais nova: "Espero que seu livro venda bem, Jamie Lynn! Não estarei no Instagram por um tempo. A mídia e o business sempre foram extremamente cruéis comigo. Eu já dei o suficiente, MAIS do que o suficiente". Britney ainda disse que a lição que tirou disso foi "não confiar em ninguém". "Faça de gatos e cachorros sua família e cuide de si mesmo", terminou a estrela.

Britney já não segue a irmã no Instagram desde julho do ano ado. Jamie Lynn se recusou a dar entrevistas sobre o assunto da tutela da irmã enquanto o processo ainda acontecia. O livro de Jamie, 'Things I Should Have Said', será lançado no dia 18 de janeiro. A protagonista do seriado 'Zoey 101' chorou ao falar da relação com Britney, dizendo que teria feito tudo ao seu alcance para que a cantora se livrasse da tutela abusiva, e que era uma grande apoiadora da irmã.