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

Evan Peters usou roupas de Jeffrey Dahmer para gravar série da Netflix

Evan Peters interpreta Jeffrey Dahmer em série polêmica da Netflix - Ser Baffo/Netflix
Evan Peters interpreta Jeffrey Dahmer em série polêmica da Netflix Imagem: Ser Baffo/Netflix

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

30/10/2022 18h13

Evan Peters, protagonista da série "Dahmer: Um Canibal Americano" (Netflix), precisou de muita pesquisa para interpretar o serial killer Jeffrey Dahmer. E para entrar ainda mais no personagem, o ator usou roupas e órios que pertenceram ao assassino na vida real.

Em uma sessão de perguntas e respostas com a imprensa norte-americana, Peters revelou que usou peças de Dahmer durante a gravação do seriado — incluindo óculos, sapatos e calças jeans.

Apesar da confissão do ator, não foi explicado como a produção conseguiu os itens que pertenceram ao serial killer.

Em entrevista à Variety, Peters contou que, quando recebeu a ligação de Ryan Murphy, criador da série, começou a fazer a pesquisa do personagem imediatamente. No entanto, assistir a entrevistas concedidas pelo assassino causou medo e repulsa no artista.

"Em encontrei no YouTube alguns áudios do que parecia ser algum psicólogo entrevistando Dahmer, ou até mesmo um detetive, e [Jeffrey] conta pelo que ou. Ele fala de uma forma muito sincera, muito normal", relata, detalhando que a tranquilidade é algo que lhe causou incômodo.

Eu estava com muito medo de tudo o que ele fez, e de mergulhar nisso e comprometer-me a fazer o meu melhor no que seria com certeza uma das coisas mais difíceis da minha vida, porque eu queria que ficasse bastante autêntico. Mas, para isso, eu precisava ar a lugares muito obscuros e ficar lá por um grande período. Evan Peters

O ator ainda revelou que precisou se policiar para não mergulhar demais nas pesquisas sobre Dahmer.

"Ao me perder nisso, era um desafio tentar olhar para essa pessoa que aparentemente era tão normal, mas que por baixo escondia um mundo inteiro de segredos", afirmou Peters.

"Eu li tanta coisa, vi tanta coisa que, em um certo ponto, alguém tinha que dizer: 'Ok, isso é o suficiente'", completou.