在Google Chrome扩展程序中,我想使用chrome.storage.local(而不是localStorage),因为:
storage.set可以触发事件侦听器使用storage.set,我如何拥有变量键名?
注意:如果我不使用setter,我可以这样做storage[v1],但对对象的更改不会触发事件监听器.
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'}
});
Run Code Online (Sandbox Code Playgroud) 因此,我对Google Chrome上的本地存储问题陷入了困境.根据我的研究,我的语法似乎是正确的,但由于某种原因,价值没有被保存.这是我的代码:
chrome.storage.sync.get(accName, function(data) {
var accData = data[accName];
// Stuff
chrome.storage.sync.set({ accName: accData }, function() {
alert('Data saved');
});
});
Run Code Online (Sandbox Code Playgroud)
每次我重新运行它,data[accName]返回undefined.我已经尝试使用sync.set参数的文字值相同的代码(例如{ 'john32': ['fk35kd'] }),这似乎有效,所以我真的很困惑这个问题是什么.任何帮助,将不胜感激.
javascript google-chrome local-storage google-chrome-extension
我试图检查是否已在chrome.storage.local中设置了键值对.因为我在这里采取了类似的问题的帮助.这里我试图从存储中获取的变量尚未设置.当我尝试使用lastError捕获错误.它是未定义的,而假设由于读取先前未设置的变量(根据我用googled)的错误而定义和设置.请在读取尚未设置的变量时帮助我检测错误.
的manifest.json
{
"name": "TestExtension",
"version": "1.0",
"manifest_version": 2,
"background": {
"scripts": ["jquery.js", "background.js"]
},
"description": "Test the extension features here",
"icons": {
"16": "images/16x16.png",
"48": "images/48x48.png",
"128": "images/128x128.png"
},
"page_action": {
"default_icon": {
"19": "images/19x19.png",
"38": "images/38x38.png"
},
"default_title": "Test Plugin default title",
"default_popup": "popup.html"
},
"permissions": ["tabs", "storage", "http://*/*", "https://*/*"]
}
Run Code Online (Sandbox Code Playgroud)
background.js
function showTheExtension(tabId, changeInfo, tab) {
console.log("Extension loaded");
chrome.pageAction.show(tabId);
} // ---EOF checkForValidUrl---
chrome.tabs.onUpdated.addListener(showTheExtension);
Run Code Online (Sandbox Code Playgroud)
popup.js
$('document').ready(function() {
chrome.storage.local.get('testVar1', function(result) {
if (chrome.runtime.lastError) { …Run Code Online (Sandbox Code Playgroud)