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

'Sex and the City' e reta final de 'A Fazenda': o melhor e o pior da TV

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

14/12/2021 15h55

Depois de muitos anos, "Sex and the City" está de volta, na HBO Max, com um reencontro que tem causado muita polêmica entre os fãs da série, que dividem opiniões sobre a continuação da história. O reality rural "A Fazenda 13" (Record TV) chegou na sua última semana depois de muita treta, assim como a temporada de "Masterchef" (Band) está em clima de despedida do público também. Essas e outras atrações da televisão brasileira são analisadas no "Splash Vê TV" de hoje (14), que traz o que rolou de melhor e pior na telinha na última semana.

Aline Ramos

Eu falei muito mal durante algumas semanas, mas duas roças seguidas trazem uma emoção para o público, que é o que queríamos há muito tempo. Quando o Arcrebiano voltou da roça ontem (13), teve muita emoção. Ele estava muito feliz com o que aconteceu, e tem sido gostoso acompanhar essa reta final. Aline Ramos, colunista de Splash

Cristina Padiglione

A valorização da leitura na novela é fantástica. Há menções literárias bem pontuadas e Lícia Manzo consegue trazer também para dentro da história nos enredos dos personagens de Andréa Beltrão, Cauã Reymond e Aline Moraes. A redação também é uma coisa que é subvalorizada, apesar dos vestibulares, e a novela a valoriza de maneira organizada. Cristina Padiglione, colunista da Folha de S. Paulo

Marcelle Carvalho

A pessoa que paga o Play Plus quer assistir as provas, a Record corta e a gente só vai ver depois. Par a aproxima edição de 'A Fazenda', espero que abram e deixam as pessoas assistirem. Isso é o serviço pelo qual se é pago. Marcelle Carvalho, colunista de Splash

'Splash Vê TV'

Apresentado por Débora Miranda ao lado de Aline Ramos, Cristina Padiglione e Marcelle Carvalho, o podcast "Splash Vê TV" vai ao ar às terças-feiras, 13h, no YouTube e demais plataformas de áudio.