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

Rodrigo alerta Douglas: 'Posso ser seu amigo lá fora, mas aqui é um jogo'

BBB 22: Rodrigo tenta falar de jogo com Douglas, mas leva uma invertida - Reprodução/Goboplay
BBB 22: Rodrigo tenta falar de jogo com Douglas, mas leva uma invertida Imagem: Reprodução/Goboplay

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

29/01/2022 01h45

Durante a Festa Boteco no "BBB 22" (TV Globo), Rodrigo Mussi chamou Douglas Silva para conversar sobre o jogo. O gerente comercial disse que não tem nada contra o ator, mas que ele pode ser sua opção no contra golpe, caso seja indicado pelo líder Tiago Abravanel.

"Deixa eu falar uma coisa pra você", iniciou Rodrigo, puxando Douglas na pista de dança. "A gente pode até aqui, talvez, não é rival.. Mas, se tiver, a gente pode ser amigo lá fora qualquer coisa, mas aqui a gente tem que jogar", avisou o gerente comercial.

"Não, aqui não tem rivalidade nem um pouco.. Te entendo, mas tu também me entende e acabou", avisou Douglas. "Vamos só ser justos um com o outro e tá tudo certo. Promete?", pediu Rodrigo. "Claro, eu não sou de mentir, eu falo a verdade", afirmou o ator.

Rodrigo continuou e disse que a história do colega é incrível, mas que eles têm objetivos diferentes no jogo. "Eu vou jogar. Posso ser seu amigo lá fora, mas aqui é um jogo!", falou. "Sim, é isso, do jogo", assentiu o ator.

O gerente comercial, então, falou que ele está entre suas opções no contra golpe. "Você não é minha primeira opção para puxar, mas sei que o Tiago vem em mim. Minha primeira opção não é você. Cuidado quem você vai salvar", avisou Rodrigo.

"Tranquilo, se rolar eu vou falar: 'Irmão, é isso. Respeito o seu jogo'", finalizou Douglas.

BBB 22: Quem o líder Tiago Abravanel deve indicar ao segundo paredão?

Enquete encerrada

Total de 7104 votos
48,31%
Reprodução/Instagram @bbb