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

Resumo pop da semana: Gentili, Lu Gimenez e a farinata do Doria

Luiza Sahd

21/10/2017 04h00

 

Danilo Gentili queimou o filme?

Tudo indica que espírito esportivo não é o forte de Danilo Gentili. Após receber críticas negativas pelo filme "Como se Tornar o Pior Aluno da Escola", que produziu e estrelou, Gentili incitou seus milhares de seguidores no Twitter a reprimirem seus "detratores". O jornalista Diego Bargas, ex-repórter da Folha de São Paulo, e o site Cine Pop receberam uma saraivada de ofensas por parte dos fãs do humorista. A gente sabe que Deus perdoa, mas a internet não. O resultado da polêmica foi mais polêmica ainda.

 

Luciana Gimenez e gordofobia

Por falar em polêmica, Luciana Gimenez também esteve nos Trending Topics por conta de uma declaração contra gordos sem motivo aparente. A apresentadora começou a semana publicando um vídeo descontraído no salão de beleza dizendo que as gordinhas têm inveja da magreza dela e recomendando que "as gordinhas" façam dieta. Recebeu muitas críticas por gordofobia e, de quebra, reacendeu comentários não tão elogiosos pelo episódio em que teria desmaiado de fome graças à sua obsessão fitness.

 

Thor, o herói da nação

Os índices de aprovação do governo Michel Temer seguem baixos nas pesquisas, mas se tem alguém na família do presidente que conquistou os corações brasileiros ultimamente foi o golden retriever Thor, mascote do nosso chefe de Estado. Após publicar que "A jornada é difícil, mas sempre há tempo para Thor" em uma legenda acariciando o cãozinho, Temer deu início a uma jornada de memes que, sinceramente, esperamos que nunca termine.

 

Pink Floyd ou bandeira LGBT?

Polenguinho faz brincadeira com álbum clássico do Pink Floyd - Reprodução/Facebook - Reprodução/Facebook
Imagem: Reprodução/Facebook

Nada como a falta de referências culturais para gerar uma belíssima confusão pública. Uma campanha publicitária da marca Polenguinho deixou muita gente de cabelo em pé por usar a imagem do arco-íris homenageando o álbum "The Dark Side of The Moon", da banda Pink Floyd. Motivo: um pessoal achou que a imagem era uma alusão à bandeira do arco-íris… LGBT. Quem ganhou com tudo isso foi a marca, mencionada a semana toda em diversos jornais e nas redes. (Ok, a gente ganhou uns ataques de risos lendo comentários equivocados também).

 

Pobre tem hábito alimentar?

O prefeito da cidade de São Paulo, João Doria, também foi um dos nomes mais mencionados na semana por conta de uma declaração dada em 2007 durante o programa "O Aprendiz". Por conta do projeto de implementação da farinata nas merendas escolares (que se popularizou como "ração humana" na mídia), um vídeo de Doria dizendo que "pobre não tem hábito alimentar, pobre tem fome" levantou milhões de questões sobre direitos humanos e… Sobre o extinto programa humorístico "Sai de Baixo".