Este es el último paso en la construcción de mi extensión y estoy seriamente atascado. Investigué chrome.local.storage, pero no puedo hacerlo funcionar.
I have the following in mypopup.js let a = document.getElementById("option01"); a.addEventListener("click", async () => { let [tab] = await chrome.tabs.query({ active: true, currentWindow: true }); a.setAttribute('aria-checked', a.getAttribute('aria-checked') === 'true' ? 'false' : 'true'); if (a.getAttribute('aria-checked') === 'true') { try { await chrome.scripting.insertCSS({ target: { tabId: tab.id, }, files: ["css/option01.css"], }); } catch (err) { console.error(`failed to insert roles CSS: ${err}`); } } else if (a.getAttribute('aria-checked') === 'false') { try { await chrome.scripting.removeCSS({ target: { tabId: tab.id, }, files: ["css/option01.css"], }); } catch (err) { console.error(`failed to remove roles CSS: ${err}`); } } });He probado todas las diferentes variaciones de set y get para el almacenamiento de cromo, y aunque entiendo el concepto, hacer que funcione como quiero me tiene tirando de los pelos. Realmente agradecería algo de ayuda.
Esto es todo lo que llegué tratando de guardar el estado de la casilla de verificación (marcada/sin marcar) y para probar agregar y eliminar una clase.
Guardar el estado marcado y agregar/eliminar las hojas de estilo del código anterior, esto es lo que quiero lograr.
document.addEventListener('DOMContentLoaded', function () { chrome.storage.local.get('enabled', function (result) { if (result.enabled != null) { a.checked = result.enabled; } }); chrome.storage.local.set({ 'enabled': a.getAttribute('aria-checked') === 'true' }, function () { }); });Encuentro esto enla documentación de almacenamiento de Chrome . Debe declarar el permiso de "almacenamiento" en el manifiesto de la extensión para usar la API de almacenamiento. Por ejemplo:
{ "name": "My extension", ... "permissions": [ "storage" ], ... }chrome.storage.local.set({key: value}, function() { console.log('Value is set to ' + value); }); chrome.storage.local.get(['key'], function(result) { console.log('Value currently is ' + result.key); });como ves en el código cuando usas una clave de cadena no usas "" y si usas una variable la pones en [] así ['clave'] Espero que este sea el problema
document.addEventListener('DOMContentLoaded', function () { chrome.storage.local.get(['enabled'], function (result) { if (result.enabled != null) { a.checked = result.enabled; } }); chrome.storage.local.set({ enabled: a.getAttribute('aria-checked') === 'true' }, function () { }); });