Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

272
Vistas
Cómo verificar valores únicos en la matriz chrome.storage

Realmente estoy luchando con esto: lo que estoy tratando de hacer es crear una matriz que se almacena en chrome.sync con la URL de las páginas únicas que visita un usuario. Agregar la url a la matriz funciona bien; lo que me cuesta es cómo verificar si esa url ya existe en la matriz. Esto es lo que tengo actualmente:

 function getURL(array) { chrome.tabs.query({active: true, lastFocusedWindow: true, currentWindow: true}, tabs => { let tabUrl = tabs[0].url; addArr(tabUrl, array); }); }
 function addArr(tabUrl, array) { array.map((x) => { let urlCheck = x.url; console.log(urlCheck); if(urlCheck != tabUrl) { array.push(tabUrl); chrome.storage.sync.set({data: array}, function() { console.log("added") }); } }) }

Lo molesto que no puedo resolver es que funciona cuando elimino cualquier cosa que tenga que ver con el mapa y solo conservo:

 array.push(tabUrl); chrome.storage.sync.set({data: array}, function() { console.log("added") });

Esto tiene aún menos sentido porque cuando inspecciono la matriz al inspeccionar la ventana emergente y luego mirar la consola, no hay ningún error, solo una matriz de datos vacía. Sin embargo, el error que me da cuando inspecciono la ventana emergente (en realidad, haga clic con el botón derecho en la extensión) es

Respuesta de manejo de errores: TypeError: no se pueden leer las propiedades de undefined (leyendo 'url') en chrome-extension://jkhpfndgmiimdbmjbajgdnmgembbkmgf/getURL.js:31:30

¿Esa línea 31 de getURL.js? Eso es parte del código que obtiene la pestaña activa. es decir

 let tabUrl = tabs[0].url;

que ni siquiera está en la misma función.

¿Algunas ideas? Estoy totalmente perplejo.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

El uso includes el método:

 function addArr(tabUrl, array) { if (!array.includes(tabUrl)) { array.push(tabUrl); chrome.storage.sync.set({data: array}); } }

Sin embargo, chrome.storage.sync tiene un límite de 8192 bytes para cada valor que solo puede contener un promedio de 100 URL, por lo que tendrá que limitar la cantidad de elementos en la matriz, por ejemplo, usando array.splice o usando varios claves en el almacenamiento o use chrome.storage.local . También hay otros límites en el almacenamiento sync , como la frecuencia de las operaciones de escritura, que puede superar fácilmente si el usuario navega mucho. Una solución aún mejor es usar IndexedDB con cada URL como una clave separada para que no tenga que volver a escribir la matriz completa cada vez.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda