ver page localstorage how debugger debug chrome javascript google-chrome-extension

javascript - page - chrome.storage.local.set usando un nombre de clave variable



localstorage inspector chrome (2)

¿Es esto lo que buscabas?

var storage = chrome.storage.local; var v1 = ''k1''; var obj= {}; obj[v1] = ''s1''; storage.set(obj); storage.get(v1,function(result){ console.log(v1,result); //console output = k1 {v1:''s1''} }); storage.get(''v1'',function(result){ console.log(result); //console output = {v1:''s1''} })

En una extensión de Google Chrome, quiero usar chrome.storage.local (a diferencia de localStorage) porque:

  1. Con pares clave-valor, el valor puede ser cualquier objeto (a diferencia de la cadena)
  2. Los cambios en el modelo de datos utilizando setter storage.set pueden desencadenar un detector de eventos

Usando storage.set , ¿cómo puedo tener un nombre de clave variable?

Nota: Si no uso el setter, puedo hacer storage[v1] , pero los cambios en el objeto no activarán el detector de eventos.

var storage = chrome.storage.local; var v1 = ''k1''; storage.set({v1:''s1''}); storage.get(v1,function(result){ console.log(v1,result); //console output = k1 {} }); storage.get(''v1'',function(result){ console.log(result); //console output = {v1:''s1''} });


Es 2016, y Chrome (y Firefox, y Edge, todos los que usan el modelo de extensión de Chrome) son compatibles con los Nombres de propiedad calculados de ES6.

Con eso, la tarea se vuelve más sencilla:

var storage = chrome.storage.local; var v1 = ''k1''; storage.set({ [v1]: ''s1'' // Will evaluate v1 as property name }); storage.get(v1, function(result) { console.log(v1, result); });