• Frete grátis a partir de R$149 (consulte seu CEP)
  • Combos Leva 4, Pague 3
  • 5% de desconto à vista
  • Até 10x sem juros
  • Entrega Turbo em São Paulo Capital
LIVO
NewLentes - Lentes de contato com grau e coloridas
Olá Visitante, Identifique-se
Perfil
Olá Visitante, Identifique-se

Televendas: (11) 2137-5811

NewLentes - Lentes de contato com grau e coloridas

Berlim - Transparente


Berlim - Transparente
R$ 199,00
3 x de R$ 66,33 sem juros
ou R$ 189,05 à vista (com 5,00% de desconto no Boleto)
Quantidade

Produto Indisponível

Avise-me quando chegar

    Personalize seu produto:

    Deseja personalizar seu produto ?


    Máximo de 99 caractéres

  • Em até 6X sem juros
  • 12 anos de empresa
  • Consulte Frete Grátis
  • Satisfação garantida

Use lentes de contato com orientação.

Consulte seu oftalmologista regularmente.

Os óculos Loops são a representação da modernidade, jovialidade e bom gosto em uma só peça. Os designs autorais das armações são pensados para levar mais estilo de uma maneira descolada, para o seu look.

Além disso, as armações são ultraleves e flexíveis, feitas com material emborrachado com toque soft, que proporciona mais conforto, resistência e maior durabilidade. As lentes também são de excelente qualidade, visando levar mais conforto e bem-estar visual ao usuário

Os óculos vêm acompanhados do nosso estojo, que segue a mesma linha de modernidade e jovialidade, e flanela em microfibra LOOPS.
Opiniões sobre o produto
Avaliar Produto
Indique a um amigo
Perguntas e responsas
Este produto ainda não foi avaliado.

Avaliar produto

Preencha seus dados, avalie e clique no botão Avaliar Produto.
Muito Ruim Ruim Bom Muito Bom Excelente

Indique a um amigo

Preencha os campos abaixo e clique em Indicar Produto.
A sua indicação será enviada para o e-mail especificado.
Quem viu este produto
também viu
Newsletter
Receba nossas novidades e promoções por email:

Produtos que você já viu

Você ainda não visualizou nenhum produto

Termos Buscados

Você ainda não realizou nenhuma busca
Newsletter
CADASTRE-SE E RECEBA OFERTAS EXCLUSIVAS:

footer-logo
R. Oscar Freire, 2377 - Pinheiros São Paulo - SP, 05409-012
Razão Social: LENTESPLUS COMERCIO OPTICO LTDA - CNPJ: 14.483.170/0001-89 - IE: 143.431.788.117

Este site usa cookies para oferecer a melhor experiência possível. Ao utilizar nossos serviços, você concorda com o uso dos cookies.

/* newlentes — Fotos de quem comprou nas avaliacoes do produto (LIVO-4917). * * COLA-SE NO GESTOR DE SCRIPTS DA WAKE, na ficha de produto. * * newlentes nao tem repositorio: aqui nao ha PR, nem revisao, nem rollback * por git. O que se cola fica em producao. Por isso a fonte deste ficheiro * vive no repositorio do Command Center, em * public-edge/newlentes/fotos-avaliacoes.js — para que exista um sitio onde * ler o que esta aqui, e um historico de quando mudou. Editar la primeiro. * * E O MESMO DESENHO DA FICHA DE LIVO, com uma diferenca: la o bloco de * opinioes e nosso e por isso tem atributos proprios (data-ts, data-autor). * Aqui e o bloco NATIVO da Wake, entao os quatro campos leem-se do HTML que * ela gera: #avaliacao-Produto .review, com .lr-nota, .reviewUser, * .reviewData e o blockquote. * * O CRUZAMENTO NAO E ADIVINHACAO: data, nota, autor e inicio do comentario * sao exatamente os quatro campos que o Command Center enviou a Wake ao * publicar a avaliacao. Le-se o que de la se pos. * * SE ALGO FALHAR, A FICHA FICA COMO ESTA. As fotos sao um acrescimo, nunca * uma dependencia do bloco de opinioes. */ (function () { "use strict"; var BASE = "https://meu.newlentes.com.br"; var PREFIXO = BASE + "/m/review/"; // O id do produto vem do fim do URL (.../lentes-de-contato-biofinity-71305). // E o mesmo numero com que o Command Center publica o indice. var PRODUTO = (location.pathname.match(/-(\d+)\/?$/) || [])[1]; if (!PRODUTO) return; /* ESPERAR PELO BLOCO DE OPINIOES. * * Na ficha de livo este codigo vive DENTRO do template, logo a seguir ao * HTML das opinioes, por isso elas ja la estao. Aqui entra pelo Gestor de * Scripts e corre quando a Wake o colocar — que pode ser antes de a lista * existir. Sem esperar, a maior parte das visitas nao pintaria nada e o * erro seria invisivel: a ficha fica igual, so sem fotos. * * Sondagem com tecto: se ao fim de ~12s nao ha lista, e que esta ficha nao * tem opinioes e nao ha nada que fazer. */ function quandoHouverLista(cb) { var tentativas = 0; (function olhar() { var el = document.getElementById("avaliacao-Produto"); if (el && el.querySelector(".review")) return cb(el); if (++tentativas > 40) return; setTimeout(olhar, 300); })(); } function normalizar(t) { return (t || "") .toLowerCase() .normalize("NFD").replace(/[`-?]/g, "") .replace(/\s+/g, " ") .trim(); } function chave(ts, nota, autor) { return ts + "|" + nota + "|" + normalizar(autor); } /* Os quatro campos de uma opiniao, tal como a Wake os pinta. */ function dadosDa(el) { var nota = parseInt((((el.querySelector(".lr-nota b") || {}).textContent) || "").trim(), 10); // dd/mm/aaaa -> aaaammdd, que e como vem no indice. var data = (((el.querySelector(".reviewData") || {}).textContent) || "").trim(); var m = data.match(/(\d{2})\/(\d{2})\/(\d{4})/); var ts = m ? m[3] + m[2] + m[1] : ""; // .reviewUser traz tambem a etiqueta escondida ("Muito Ruim") e a data. // O nome e o primeiro span que nao e nenhuma das duas. var autor = ""; var u = el.querySelector(".reviewUser"); if (u) { var spans = [].slice.call(u.querySelectorAll("span")); for (var i = 0; i < spans.length; i++) { var s = spans[i]; if (s.className && /hide|reviewData/.test(s.className)) continue; if (s.querySelector && s.querySelector("span")) continue; autor = s.textContent; break; } } var texto = (((el.querySelector("blockquote") || {}).textContent) || "") .replace(/^[\s"“”]+/, "") .replace(/[\s"“”]+$/, ""); return { ts: ts, nota: isNaN(nota) ? "" : String(nota), autor: autor, texto: texto }; } function pintar(el, fotos) { var cx = document.createElement("div"); cx.style.display = "flex"; cx.style.flexWrap = "wrap"; cx.style.gap = "8px"; cx.style.marginTop = "8px"; fotos.forEach(function (f) { // So as nossas: a URL tem de vir do prefixo onde o Command Center // publica. Assim um indice adulterado nao mete uma imagem de fora. if (!f || typeof f.url !== "string" || f.url.indexOf(PREFIXO) !== 0) return; var a = document.createElement("a"); a.href = f.url; a.target = "_blank"; a.rel = "noopener noreferrer"; a.style.display = "block"; a.style.border = "1px solid #e2e8f0"; a.style.borderRadius = "8px"; a.style.overflow = "hidden"; var img = document.createElement("img"); img.src = f.url; img.alt = "Foto enviada por quem comprou"; img.loading = "lazy"; img.decoding = "async"; img.style.width = "96px"; img.style.height = "96px"; img.style.objectFit = "cover"; img.style.display = "block"; if (f.w) img.width = f.w; if (f.h) img.height = f.h; a.appendChild(img); cx.appendChild(a); }); if (cx.childNodes.length) el.appendChild(cx); } // GET simples, sem cabecalhos nossos: o behavior do CDN nao aceita OPTIONS, // entao qualquer cabecalho proprio dispararia um preflight que falharia. function pedir(rota) { return fetch(BASE + rota, { credentials: "omit" }) .then(function (r) { return r.ok ? r.json() : null; }); } function temFotos(manifesto) { var ids = manifesto && manifesto.productos; if (!Array.isArray(ids)) return false; for (var i = 0; i < ids.length; i++) { if (String(ids[i]) === PRODUTO) return true; } return false; } // Primeiro o manifesto: um indice que nao existe chega como erro de CORS // (o S3 responde 403 e a pagina de erro do CloudFront sai sem cabecalhos), // e a maioria dos produtos nao vai ter fotos. // // A loja vai na rota: o bucket e UM so para os tres dominios e cada tenant // da Wake numera os seus produtos a parte. quandoHouverLista(function (lista) { pedir("/d/fotos/newlentes/productos.json") .then(function (manifesto) { if (!temFotos(manifesto)) return null; return pedir("/d/fotos/newlentes/" + encodeURIComponent(PRODUTO) + ".json"); }) .then(function (dados) { if (!dados || !Array.isArray(dados.opinioes)) return; // Cada entrada gasta-se numa opiniao e nao mais: duas pessoas com o // mesmo nome, no mesmo dia e com a mesma nota nao podem ficar com as // fotos uma da outra. var porChave = {}; dados.opinioes.forEach(function (o) { var k = chave(o.ts, o.nota, o.autor); (porChave[k] = porChave[k] || []).push(o); }); [].slice.call(lista.querySelectorAll(".review")).forEach(function (el) { var d = dadosDa(el); var candidatos = porChave[chave(d.ts, d.nota, d.autor)]; if (!candidatos || !candidatos.length) return; var i = 0; if (candidatos.length > 1) { // Desempate pelo comentario, o unico campo que resta. var texto = normalizar(d.texto); i = -1; for (var j = 0; j < candidatos.length; j++) { if (texto.indexOf(normalizar(candidatos[j].texto)) === 0) { i = j; break; } } if (i < 0) return; } pintar(el, (candidatos.splice(i, 1)[0] || {}).fotos || []); }); }) .catch(function () { /* sem fotos, a ficha fica como esta */ }); }); })();

Voltar

SUBTOTAL: