J'essaye de faire une extension qui nécessite de sauvegarder du texte (URL). Le réglage des données semble correct, mais essayer de récupérer les données est le problème.chrome.storage.local.get ne pas obtenir de données
Le manifeste d'extension comporte à la fois le JavaScript contextuel et le contenu JavaScript dans la zone des scripts de contenu.
{
"manifest_version": 2,
"name": "Extension_Name",
"version": "0.0.1",
"browser_action": {
"default_title": "Extension_title",
"default_icon": "icon.png",
"default_popup": "popup.html"
},
"permissions": ["storage"],
"content_scripts": [
{
"matches": [
"<all_urls>"
],
"js": ["content.js","popup.js"]
}
]
}
Les URL sont stockées dans la zone de stockage local Chrome:
var b = document.getElementById("l"); //l is a button
b.onmouseup = function() {
var r = prompt("Please enter the website to add.");
var g = [];
chrome.storage.local.get("whitelist", function (i) {
if (i['whitelist'] !== undefined) {
var g = i['whitelist'];
}
});
g.push(r);
chrome.storage.local.set({
"whitelist": g
}, function() {
console.log("done")
});
}
Cela semble fonctionner, et je peux saisir manuellement la fonction get pour les données. Cependant, je ne peux pas trouver un moyen pour les données à utiliser dans le content.js
//getting website whitelist
d = null;
var inw = false;
chrome.storage.local.get("whitelist", function (p) {
d = p['whitelist'];
}); //why doesnt this work???
console.log(d); //testing (returns null in the console...)
for (var j in d) { //this script doesnt run because d is not set to an array
alert(window.location.host.replace(/\./g, ""));
if (d[j].replace(/\./g, "").replace(/:\/\//g, ".")
.split(".")[1] === window.location.host.replace(/\./g, "")) {
inw = true;
alert("true");
}
}
related: [Comment renvoyer la réponse d'un appel asynchrone?] (Https://stackoverflow.com/q/14220321) – Makyen