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

Carolina Ferraz sobre voltar a fazer novelas: 'Nunca direi nunca'

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

17/03/2023 04h00

Recentemente, Carolina Ferraz declarou que não voltaria a fazer novelas. Porém, durante participação no Otalab, programa do Canal UOL comandado por Otaviano Costa, a atriz não descartou totalmente essa possibilidade. "Nunca direi nunca. Eu sou atriz, amo meu ofício. Sou uma atriz de formação", disse.

Eu acho que novela, eu já fiz tudo, já trabalhei com todos os diretores, tem uma nova geração de mulheres trabalhando, muito bacanas. Eu trabalhei quando elas estavam começando. Hoje elas estão mais consolidadas e já tem mais pessoas novas entrando. Eu acho legal isso. Eu tive poucas oportunidades de trabalhar com diretoras mulheres. E foram muito legais as experiências que eu tive. Eu me dei muito bem com a Amora Mautner, foi muito legal - relembrou Carolina no Otalab

Carolina Ferraz sobre saída da Globo: 'Assustador, mas também libertador'

A atriz Carolina Ferraz, com um longo currículo em novelas, se reinventou como apresentadora do programa Domingo Espetacular, da Record, após ter seu contrato com a TV Globo encerrado. Mas, segundo ela, não foi fácil encarar essa nova fase em um primeiro momento.

Foi assustador, porque tudo o que é novo, você fala 'e agora?'. Mas, ao mesmo tempo, foi maravilhoso porque foi libertador também. Eu fiz as coisas de acordo com o que eu acredito para mim. Eu posso não conseguir as coisas como eu estou visualizando no meu futuro, mas eu vou me comportar de acordo como eu espero que o meu futuro se torne. E isso foi muito libertador
- disse Carolina no Otalab

Carolina Ferraz: Mulher tem o direito de envelhecer 'sem ficar esticada'

Aos 55 anos, Carolina Ferraz se emocionou ao falar sobre a pressão pela 'juventude eterna', como deixou de se cobrar ao longo do tempo e defendeu o 'direito ao envelhecimento'.

Se você não fica esticada, se você não faz todos os procedimentos, se você tem ruga, se acorda inchada... é isso. Você tem esse direito - disse Carolina no Otalab

Carolina Ferraz no OnlyFans? Atriz abre o jogo

Carolina Ferraz usou humor ao falar sobre a possibilidade de criar um perfil no OnlyFans, popular plataforma conhecida pelo conteúdo adulto. A atriz uniu sua paixão pela culinária para "apimentar" a brincadeira.

Se fosse rolar um OnlyFans, já imaginou eu, com um aventalzinho, na cozinha, com todas as minhas as... eu faria alguma coisa meio uma cozinha na praia, que você pode ir tomando um sol, bate um vento, os cabelos se mexem. Eu acho que não tenho vocação para isso. Ia apagar o fogo toda hora, ia desandar. Colocar o tempero e voar para todo lado. Não ia ser legal - brincou Carolina no Otalab

Veja a íntegra do programa: