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

Key elogia postura de brother após treta no BBB 23: 'Fiquei muito feliz'

BBB 23: Key elogia Alface e questiona Sapato - Reprodução/Globoplay
BBB 23: Key elogia Alface e questiona Sapato Imagem: Reprodução/Globoplay

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

07/03/2023 18h25Atualizada em 07/03/2023 19h05

Key Alves aproveitou um papo com Sapato para elogiar Alface após a treta do brother com o grupo Deserto no BBB 23 (Globo).

Cara de Sapato foi falar com a jogadora de vôlei depois de saber que Ricardo contou algumas falas controversas que o grupo rival externou sobre ela. O lutador quis deixar claro que ele não fez parte das pessoas que xingavam Key, e ela aproveitou para elogiar Alface.

Key: "Eu fiquei muito feliz. Eu senti muito que, depois que o Cowboy saiu, muita gente que me amava e falava comigo, virou a cara pra mim e começou a achar coisas de mim justamente pra me por no Paredão, pra saber alguma resposta. E ele me tranquilizou muito quando ele falou: 'Eu pensava a mesma coisa que muita gente do meu grupo pensava sobre você, e eu tirei minhas próprias conclusões com meus olhos que você não é nada disso que eles tavam falando ali dentro'. Eu fiquei feliz por isso, eu não quero que todo mundo ali ache isso de mim, eu quero que uma pessoa enxergue quem sou eu dali do outro grupo (...) Ele me contou algumas coisas que eu já imaginava que algumas pessoas pensavam de mim, mas não tem como eu mostrar pra ninguém"

Sapato: "Eu nunca falei (mal de você). Você sabe disso. O problema do Facinho não são por ele ter um coração ruim ou ser um cara maldoso. As paradas dele são justamente de reação, de tomar uma atitude meio assim. Todo mundo tem direito de errar aqui, mas ele é reativo e termina te tratando mal. Não acho que ele é um cara maldoso, não vejo isso nele"

Key: "Mas por que vocês podem falar comigo e ninguém fala nada e quando ele senta perto de mim ou tira uma selfie o povo fala um monte?"

Sapato: "Tem algumas coisas que são por histórico"

ENQUETE UOL BBB 23: Quem você quer eliminar no Paredão?

Enquete encerrada

Total de 313401 votos
50,40%
Divulgação/Globo