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

Netflix terá pacote mais barato com exibição de anúncios; veja o que muda

Getty Images
Imagem: Getty Images

Bruna Souza Cruz

De Tilt*, em São Paulo

25/06/2022 10h37

A Netflix terá em breve um plano de que exibirá anúncios publicitários. A informação foi confirmada por Ted Sarandos, copresidente-executivo da empresa, durante o festival de publicidade Cannes Lions, que terminou ontem (24).

Esse novo plano deve ter um preço menor em comparação com os demais e é uma tentativa de atrair novos usuários. As informações são do Hollywood Reporter.

A mudança é uma das estratégias da plataforma de streaming de vídeo para lidar com a perda de 200 mil s durante o primeiro trimestre de 2022. Só nesta semana, a companhia demitiu mais 300 funcionários em diferentes países.

Como será

A Netflix não divulgou informações sobre quando a mudança será feita, mas uma reportagem de maio do jornal New York Times aponta que isso deve acontecer ainda neste ano.

Sarandos explicou nesta semana que as propagandas não serão adicionadas em todo o serviço da Netflix. Elas serão exibidas em um dos planos oferecidos para . Isso significa que os pacotes mais caros devem permanecer como estão.

"Deixamos um grande segmento de clientes fora da mesa, que são pessoas que dizem: 'Ei, a Netflix é muito cara para mim e não me importo com anúncios", afirmou o executivo na quinta-feira (23).

Mesmo com a crise enfrentada pela plataforma, o executivo se mostrou confiante. "Temos bastante escala, lucratividade e fluxo de caixa livre para continuar a expandir esse negócio."

Fim do compartilhamento de senha

Em março deste ano, a Netflix anunciou outra grande mudança: aplicação de taxas extras para quem compartilhar a da conta.

A empresa iniciou testes no Chile, Costa Rica e Peru. E essa cobrança ocorre caso as pessoas não morem na mesma residência.

Dependendo do país, a taxa fica entre US$ 2,12 (R$ 11,66 na conversão direta) e US$ 3 (R$ 16,50 na conversão direta).

*Com texto de Bárbara Mannara, em colaboração para Tilt.