Me gustaría almacenar algunas configuraciones para sitios individualmente y mi idea era almacenar un mapa con los nombres de dominio como claves y las configuraciones como valor usando storage.sync de la API de Chrome.
Cuando intento acceder a un mapa que acabo de recuperar mediante storage.sync.get , aparece el error:
Error handling response: TypeError: result.sites.get is not a function
En la documentación (enlace para resaltar) se menciona que los datos se pueden almacenar como objetos. No estoy seguro de cuál es el problema ya que los mapas son objetos:
var map = new Map([[1,2],[3,4]]); console.log(map instanceof Object); //trueAquí leí que la serialización es un problema cuando intentas almacenar objetos usando storage.local . Sin embargo, no sé si esto debería ser un problema con storage.sync .
Aquí está el código que estoy tratando de ejecutar:
var siteList = new Map(); siteList.set('site1', {settings: "foo"}); siteList.set('site2', {settings: "bar"}); chrome.storage.sync.set({sites: siteList}, function() { console.log("Map set"); }); chrome.storage.sync.get(['sites'], function(result) { console.log(result.sites); console.log(result.sites.get('site1')); // This yields the error }); Como puede ver, también console.log result.sites , esto resultó en un [[Prototype]]: Object que se ve así:
constructor: ƒ Object() hasOwnProperty: ƒ hasOwnProperty() isPrototypeOf: ƒ isPrototypeOf() propertyIsEnumerable: ƒ propertyIsEnumerable() toLocaleString: ƒ toLocaleString() toString: ƒ toString() valueOf: ƒ valueOf() __defineGetter__: ƒ __defineGetter__() __defineSetter__: ƒ __defineSetter__() __lookupGetter__: ƒ __lookupGetter__() __lookupSetter__: ƒ __lookupSetter__() __proto__: (...) get __proto__: ƒ __proto__() set __proto__: ƒ __proto__() Si alguien sabe si es posible almacenar mapas usando storage.sync y, de ser así, cómo hacerlo, ¡me encantaría saberlo!
~Naitzirch