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

Jojo Todynho vai à polícia e registra B.O contra ex: 'Agrediu verbalmente'

De Splash, em São Paulo

10/12/2022 13h42Atualizada em 10/12/2022 18h39

Jojo Todynho, 25, foi à DEAM (Delegacia Especializada no Atendimento à Mulher) na manhã deste sábado (10) e registrou um boletim de ocorrência contra o ex-marido, o militar do Exército Lucas Souza, 21. O casamento chegou ao fim em outubro e, desde então, os dois já trocaram farpas na internet algumas vezes.

Por meio de um vídeo publicado nas redes sociais, a cantora também afirmou que entrou com um pedido de medida protetiva contra o rapaz, na tarde de hoje,

"Acabei de sair da DEAM juntamente com a minha advogada. Vim abrir um B.O, uma medida protetiva contra o Lucas. Ele, nas tentativas de pedir para voltar e eu negando... Ontem, ele me agrediu verbalmente", disse, no Instagram.

Em frente ao prédio da polícia, a artista ainda ressaltou que "agressão não é só física" e a importância da atitude no combate à violência contra as mulheres.

"Uma mulher quando diz que não, é não. Não ito falta de respeito, até porque não desrespeitei ele e nem o diminuí como homem. Por isso, vim hoje tomar minha atitude", desabafou.

E completou: "Não compre briga sem saber da história. Fui colocada como vilã, entre outras coisas, e preferi calar, porque tenho uma assessoria e um jurídico que responde por mim. E tenho contratos também".

Lucas Souza itiu que xingou Jojo durante uma discussão, ontem, mas negou qualquer ameaça física contra a ex-mulher. O rapaz apareceu chorando nas redes sociais.

"O que aconteceu? Eu tive uma conversa com a Jojo, a gente conversou e eu a xinguei. Mas eu não quero fazer nada com ela. Nunca. Medida protetiva, cara. Eu a xinguei. Não precisa de medida protetiva contra mim. Eu não quero fazer mal contra ela."

Separação

Depois de uma separação-relâmpago no início de outubro, Jojo e Lucas anunciaram o término definitivo do casamento semanas depois. À época, de acordo com o militar, foi a cantora quem decidiu dar um ponto final na relação.

"Eu acredito que não tem mais volta dessa vez. Nossa relação foi uma relação boa até determinado momento", disse ele, em vídeo publicado nos stories.

Os dois casaram em janeiro deste ano, em uma cerimônia em Guaratiba, Zona Oeste do Rio de Janeiro, após quatro meses de namoro.