Javascript 为内容脚本获取本地存储值的简便方法[Chrome Extension]
我希望一些数据存储在本地存储到内容脚本页面。由于它不是直接可用的,所以我通过Javascript 为内容脚本获取本地存储值的简便方法[Chrome Extension],javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,我希望一些数据存储在本地存储到内容脚本页面。由于它不是直接可用的,所以我通过chrome.runtime.sendMessage实现了它,但我有几个值,看起来像这样 var username, apikey, openexchange, currency, locale; chrome.runtime.sendMessage({method: "getLocalStorage", key: "username"}, function(response) { username = respo
chrome.runtime.sendMessage
实现了它,但我有几个值,看起来像这样
var username, apikey, openexchange, currency, locale;
chrome.runtime.sendMessage({method: "getLocalStorage", key: "username"}, function(response) {
username = response.data;
});
chrome.runtime.sendMessage({method: "getLocalStorage", key: "apikey"}, function(response) {
apikey = response.data;
});
chrome.runtime.sendMessage({method: "getLocalStorage", key: "openexchange"}, function(response) {
openexchange = response.data;
});
chrome.runtime.sendMessage({method: "getLocalStorage", key: "currency"}, function(response) {
currency = response.data;
});
chrome.runtime.sendMessage({method: "getLocalStorage", key: "locale"}, function(response) {
locale = response.data;
});
当值增加时,此列表将更进一步,是否有其他方法将所有值包装在一个函数中
任何帮助都将不胜感激。我将首先回答您的直接问题(出于教育目的),然后提供一种更好的方法(根本不使用
localStorage
)
您正在编写响应
getLocalStorage
方法的消息侦听器。因此,通过为每个请求发送多个值,您可以使其更加通用
例如:
chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
switch(message.method) {
// ...
case "getLocalStorage":
if(message.key) { // Single key provided
sendResponse({data: localStorage[message.key]});
}
else if(message.keys) { // An array of keys requested
var data = {};
message.keys.forEach(function(key) {data[key] = localStorage[key];})
sendResponse({data: data});
}
break;
// ...
}
});
现在你可以做:
chrome.runtime.sendMessage(
{method: "getLocalStorage", keys: ["username", "apikey"]},
function(response) {
username = response.data.username;
apikey = response.data.apikey;
}
);
也就是说,你在重新发明轮子。Chrome已经有了一个存储API(出人意料地称为
Chrome.storage
),它正好解决了这个问题:扩展页面和内容脚本都可以使用某种持久存储
添加“存储”
权限后,您可以执行以下操作:
chrome.storage.local.get(key, function(data) {
// Use data[key]
});
chrome.storage.local.get([key1, key2], function(data) {
// Use data[key1], data[key2]
});
chrome.storage.local.get({key1: default1, key2: default2}, function(data) {
// Use data[key1], data[key2], and defaults will be used if not yet in storage
});
chrome.storage.local.set({key1: value1, key2: value2});
- 关于Chrome
API存储
storage
API的要点:它可以以相同的方式在每个扩展上下文中使用。除此之外,我坚持要求您阅读文档。我刚刚尝试了第一种方法,但它返回未定义的@SurjithSM My bad,forget消息。编辑以修复。没关系;顺便说一句,关于“迅速反应”,我推荐伟大的RobW。