;(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
Logo Pagbenk Seu dinheiro rende mais
Topo

Quer saber se desconto da Black Friday é real? Sites têm histórico de preço

Thâmara Kaoru

Do UOL, em São Paulo

26/11/2019 04h00

Resumo da notícia

  • Sites prometem ajudar quem não pesquisou os preços dos produtos que quer comprar na Black Friday
  • Black Friday acontece na sexta-feira (29)
  • Além do histórico de preços, é possível criar alertas para ser avisado se o valor do produto cair

A lista do que quer comprar na Black Friday já está pronta, mas não deu tempo de monitorar os preços para saber se a oferta é real? Alguns sites prometem ajudar os consumidores que querem aproveitar os descontos na sexta-feira (29), mas não conseguiram acompanhar os preços antes.

Os sites disponibilizam o histórico de preços, permitem criar alertas para quando o produto atingir o valor desejado e afirmam que vão dizer se as ofertas apresentadas pelas empresas são reais. Veja como eles funcionam:

Black Friday de Verdade

O site Black Friday de Verdade tem um plug-in, disponível para o navegador Chrome, que faz comparação de preços na hora da compra e disponibiliza um gráfico com o histórico de quanto aquele produto custou. Também aplica cupons de desconto automaticamente.

Bondfaro

O site Bondfaro permite ao consumidor comparar os preços dos produtos e visualizar o histórico de valores dos últimos seis meses. Também mostra a ficha técnica do produto pesquisado.

Buscapé

No Buscapé, o consumidor consegue visualizar na página inicial as ofertas selecionadas pelo site. É possível buscar por um produto específico e ter o ao histórico de preços de até seis meses. O consumidor também pode criar um alerta para ser avisado quando um produto atingir o preço desejado.

JáCotei

No JáCotei, dá para acompanhar os preços dos últimos seis meses pelos gráficos disponibilizados pelo site. É possível criar um alerta para ser avisado quando o produto chegar no valor desejado. O site promete dizer se os produtos estão mesmo com o menor preço dos últimos seis meses com o selo "Desconto Real".

Zoom

O Zoom oferece o histórico de preços dos últimos seis meses. É possível cadastrar um alerta de preço. Se o valor definido pelo consumidor for atingido, ele é avisado por email, pelo aplicativo ou por SMS. O site também promete identificar por meio de um selo quais as ofertas reais, comparando preços praticados anteriormente.

Quem tiver dúvidas sobre o produto que quer comprar pode perguntar para os especialistas do Zoom, que estarão disponíveis pelo site ou pelo aplicativo (dentro do aplicativo haverá um link para falar pelo WhatsApp). Eles estarão à disposição de 28 de novembro até 1º de dezembro.

Veja mais economia de um jeito fácil de entender: @uoleconomia no Instagram.
Ouça os podcasts Mídia e Marketing, sobre propaganda e criação, e UOL Líderes, com CEOs de empresas.
Mais podcasts do UOL no Spotify, Apple Podcasts, Google Podcasts e outras plataformas

Especialista alerta para principais golpes da Black Friday

Band Entretenimento