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

Janja reage a crítica por bocejar em debate e ataca Bolsonaro: 'Inominável'

Janja Silva foi filmada bocejando nos bastidores do debate presidencial - Reprodução/Twitter
Janja Silva foi filmada bocejando nos bastidores do debate presidencial Imagem: Reprodução/Twitter

Do UOL, em São Paulo

17/10/2022 10h22Atualizada em 17/10/2022 10h44

A mulher de Lula, Janja Silva, reagiu hoje a críticas que vem recebendo de apoiadores do presidente Jair Bolsonaro (PL). Após Janja ter sido filmada bocejando durante o debate promovido na noite de ontem pelo UOL, em parceria com Band, Folha de S.Paulo e TV Cultura, internautas disseram que ela estaria entediada com o evento.

"Bocejei sim no debate, e bocejei na cara do Inominável e ele viu. Aquele papinho de Venezuela, Nicarágua é de dar sono mesmo", criticou ela nas redes sociais.

"O que queremos saber ele não respondeu. O que é 'pintar um clima' com meninas de 14 anos? Isso tem nome e é crime".

Ela se referiu a falas de Bolsonaro ontem, que mencionou as ditaduras dos países latino-americanos em diversas ocasiões para criticar o adversário.

'Pintou um clima'. Apesar da declaração de Janja, o presidente não foi questionado em nenhum momento sobre a fala de "pintar um clima".

No sábado, um vídeo em que Bolsonaro relata uma interação entre ele e um grupo de meninas venezuelanas menores de idade viralizou nas redes sociais.

"Parei a moto numa esquina, tirei o capacete e olhei umas menininhas, três, quatro, bonitas; de 14, 15 anos, arrumadinhas num sábado numa comunidade, vi que eram meio parecidas. Pintou um clima, voltei, 'posso entrar na tua casa?' Entrei", disse o presidente em entrevista a um podcast na sexta-feira (14). "Tinha umas 15, 20 meninas, [num] sábado de manhã, se arrumando —todas venezuelanas. E eu pergunto: meninas bonitinhas, 14, 15 anos se arrumando num sábado para quê? Ganhar a vida".

O trecho da fala sobre "pintar um clima" com menores de idade viralizou neste sábado (15) e chegou aos Trending Topics do Twitter —lista dos assuntos mais comentados na rede social. Somados, os termos "pintou um clima", "Bolsonaro pedófilo" e "Bolsonaro pervertido" chegaram a somar quase 90 mil menções no Twitter.

Como mostrou o UOL, quando Bolsonaro (PL) chegou de moto a uma casa de venezuelanas em São Sebastião, proximidade de Brasília, a garagem estava transformada em um salão de beleza. Uma cabeleireira e oito pessoas de sua equipe cortavam cabelo, faziam escova, prancha e babyliss em um grupo de mulheres venezuelanas.

"Não tem nada a ver com o que ele está falando agora", diz uma das venezuelanas, que pediu para ter seu nome preservado, pois teme retaliação. O UOL confirmou que ela estava no local no dia da visita do presidente.

Lula não mencionou tema durante debate. O ex-presidente não fez nenhuma pergunta sobre o episódio. Quem trouxe o tema foi o próprio Bolsonaro, que usou parte do seu tempo para se defender da polêmica.

"Lula, se você não mentisse não seria você. Me chama o tempo todo de genocida, miliciano, canibal... E a última seu programa influenciado por Gleisi Hoffmann me acusou de pedofilia. Tentando me atingir naquilo que tenho mais de sagrado, defesa da família brasileira, defesa das crianças", declarou.

Pouco antes do início do programa, o TSE (Tribunal Superior Eleitoral) acolheu um pedido do presidente para que Lula se abstenha de explorar durante a propaganda eleitoral gratuita e em suas redes sociais vídeos que associem o candidato à reeleição ao crime de pedofilia.