Est-ce que des extensions Chrome ont accès au stockage local?
-
23-09-2019 - |
Question
Est-il possible de stocker des données d'une manière qui sera accessible après un redémarrage du navigateur dans le cadre d'une extension de chrome?
La solution
Encore plus simple que cela:
A lire:
var myStoredValue = localStorage["TheKeyToMyStoredValue"];
Pour écrire:
localStorage["TheKeyToMyStoredValue"] = myNewValueToStore;
Pour se débarrasser de:
delete localStorage["TheKeyToMyStoredValue"];
Autres conseils
Oui, il est. Dépasser une soluce complète de la façon de le faire serait probablement dépasser la longueur d'une réponse raisonnable StackOverflow, donc je vais vous référer à ce tutoriel très complet par Rajdeep Dua.
Le code correspondant ressemblerait à ceci:
// Store item in local storage:
function setItem(key, value) {
try {
log("Storing [" + key + ":" + value + "]");
window.localStorage.removeItem(key); // <-- Local storage!
window.localStorage.setItem(key, value); // <-- Local storage!
} catch(e) {
log("Error inside setItem");
log(e);
}
log("Return from setItem" + key + ":" + value);
}
// Gets item from local storage with specified key.
function getItem(key) {
var value;
log('Retrieving key [' + key + ']');
try {
value = window.localStorage.getItem(key); // <-- Local storage!
}catch(e) {
log("Error inside getItem() for key:" + key);
log(e);
value = "null";
}
log("Returning value: " + value);
return value;
}
// Clears all key/value pairs in local storage.
function clearStrg() {
log('about to clear local storage');
window.localStorage.clear(); // <-- Local storage!
log('cleared');
}
function log(txt) {
if(logging) {
console.log(txt);
}
}
La version actuelle du chrome a le stockage local.
Je l'ai utilisé moi-même. Vous pouvez utiliser Modernizr pour détecter si le navigateur prend en charge ou non. J'ai écrit une solution pour un client où je fais une solution de repli à cookie si aucun stockage local existe, mais cela ne devrait pas être un problème pour les extensions.
Aujourd'hui, il est peut-être préférable d'utiliser chrome.storage chrome.storage est asynchrone, ce qui le rend plus rapide et localStorage est limitée à 5 Mo.
il y a déjà quelques grandes réponses, mais sachez que si vous décidez d'utiliser un script de contenu dans votre extension, ce script de contenu ne sera pas avoir accès à localStorage. donc chrome.storage est une bonne alternative.