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

Jessi diz que deu coração partido para Jade: 'Você me magoou'

BBB 22: Jessilane chama Jade para conversar sobre queridômetro - Reprodução/Globoplay
BBB 22: Jessilane chama Jade para conversar sobre queridômetro Imagem: Reprodução/Globoplay

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

29/01/2022 22h50

Jessilane revelou para Jade Picon que deu o emoji de coração partido para ela no queridômetro, pela forma que foi tratada pela influenciadora digital no "BBB 22" (TV Globo). A professora decidiu confessar enquanto Jade aguardava o sinal para o castigo do monstro.

"Eu dei coração pra todo mundo e ganhei um coração partido", contou Jade. "Fui eu que dei, você partiu meu coração ontem. Eu fiquei muito magoada com você", revelou Jessi. "Sério? O que eu fiz?", questionou a sister.

A professora falou que ontem quando elas estavam se arrumando para a festa, a influenciadora negou sua ajuda. "Eu vim ajudar a Bárbara e você ficou mandando eu ir embora", relembrou.

"Não, não, eu te pedi a roupa rápido pro Arthur pendurar..", explicou Jade, quando foi interrompida por Jessi: "Não, Jessi, sai, deixa ela aí", imitou a professora. "Não, foi a roupa", continuou a influenciadora. "Eu fiquei: 'Nossa, eu só estou tentando ajudar", completou Jessi.

"Desculpa Jessi não foi minha intenção, não era pra você ir embora era pra só pra você ar rápido os shorts", falou Jade. "Não, eu não tava com roupa nenhuma. Você tinha entrado para levar ela e eu entrei...", contou Jessi.

"Você tava com roupa sim para o Arthur pendurar", insistiu a empresária. "Não, eu não achei a roupa dela..", relembrou a professora. "Mas lá dentro tava sem roupa, porque eu tava com a bota, o Arthur com a blusa..", disse Jade.

"Não, eu não tava com nenhuma roupa, eu só fui ajudar mesmo..", insistiu Jessi. "Então, desculpa. Não foi proposital", pediu a empresária.

Após eliminação de Luciano, quem é o participante preferido do 'BBB 22'?

Enquete encerrada

Total de 19336 votos
16,68%
Reprodução/Instagram @bbb