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

Mulher de Michael Jackson? Médium diz ser casada com espírito do rei do pop

Médium diz ser casada com espírito de Michael Jackson - Kevin Mazur/WireImage/Getty
Médium diz ser casada com espírito de Michael Jackson Imagem: Kevin Mazur/WireImage/Getty

Do Splash, em São Paulo

16/08/2021 16h49

A médium Kathleen Roberts afirmou ser casada com o espírito do astro norte-americano Michael Jackson, que morreu em 2009. Ela comentou sobre a relação com o rei do pop em contato com o jornal Daily Star.

Ela diz que o espírito de Michael está se sentindo bem em contato com ela e está utilizando o seu corpo para cantar, dançar e realizar refeições. "Ele adora biscoitos", apontou.

Ele permanece em mim relaxado, não canalizando e apenas curtindo viver através de mim e se comunicar comigo como um marido e gosta de comer quando está mim. Ele xinga muito mais do que eu esperava que ele fizesse.
Kathleen Roberts

A médium Kathleen Roberts diz ser casada com o espírito de Michal Jackson - Reprodução/Facebook - Reprodução/Facebook
A médium Kathleen Roberts diz ser casada com o espírito de Michal Jackson
Imagem: Reprodução/Facebook

Kathleen relata que o espírito de Michael é "tagarela", diferente do que ela imaginava ao acompanhar a carreira do rei do pop pela televisão. Ela nunca conheceu Michael pessoalmente.

Ele é muito mandão e aponta os erros que eu cometo. Presumo que ele tenha herdado isso de seu pai, então tento ignorar isso porque o amo e também não sou perfeita.
Kathleen Roberts

A médium também explicou que a relação não envolve sexo. "Ele não gosta de ser tocado de volta. Ele me assusta com visões de aranhas e visões de cadáveres se eu o beijar ou tentar iniciar um romance fisicamente".

Eu me sinto especial por ele ter me escolhido como esposa (embora não no papel). Tratamos nosso relacionamento como se fôssemos casados. Temos nossos altos e baixos, mas a verdade é que não consigo parar de amá-lo.
Kathleen Roberts

Em 2020, Kathleen Roberts compartilhou um artigo em que dá detalhes sobre a relação com o espírito de Michael Jackson. Ela também diz ser a reencarnação da atriz Marilyn Monroe, o que teria atraído o astro da música.