Chrome没有设置本地存储
Chrome not setting local storage
我正在创建一个Chrome打包应用程序。我想在用户第一次打开应用程序时显示EULA。我想使用Chrome的本地存储来测试应用程序是否已打开。
这是我的javascript:
function disagree(){
chrome.storage.local.set({eula:'false'}, function(result) {
console.log(result.eula)});
// console.log returns undefined
// Returns: TypeError: Cannot read property 'eula' of undefined
document.getElementById("eulaDisagree").style.display = "block";
}
function agree(){
chrome.storage.local.set({eula:'true'}, function(result) {
console.log("Set eula: " + result.eula);
// console.log returns undefined
// Returns: TypeError: Cannot read property 'eula' of undefined
chrome.storage.local.get("eula"), function(result){
console.log("Get Result: " + result.eula)};
// Returns this error: extensions::uncaught_exception_handler:8 Error in response to
// storage.set: Error: Invocation of form get(string) doesn't match definition
// get(optional string or array or object keys, function callback)
});
document.getElementById("background").style.height = "0%";
document.getElementById("foreground").style.height = "0%";
document.getElementById("foreground").style.border = "none";
}
// Creates event listeners
document.addEventListener('DOMContentLoaded', function(){
document.getElementById("disagree").addEventListener("click", function(){
disagree();
});
document.getElementById("agree").addEventListener("click", function(){
agree();
});
});
问题是Chrome没有将数据存储到本地存储。
您没有正确使用chrome.storage
api。看看StorageArea.get
和StorageArea.set
api的定义。
-
StorageArea.set(object items, function callback)
。回调函数没有参数 -
StorageArea.get(string or array of string or object keys, function callback)
,你应该把回调作为一个参数。
一个示例用法如下:
chrome.storage.local.set({ eula: true });
chrome.storage.local.get('eula', function (results) {
console.log(results.eula);
});
我认为这个问题来自两个小错误。
我相信在设置键值对时
chrome.storage.local.set({eula:'false'}, function() {});
eula应该是一个字符串{'eula': 'false'}这可能就是为什么一开始就没有设置它的原因。
是控制台的原因。日志未定义是因为set没有向回调函数发送结果参数,而这只发生在get方法中。
如果将eula设置为字符串将设置存储对象,那么您的get方法应该停止抛出错误。
我似乎有get
的语法错误。我把我的javascript改成如下:
function disagree(){
chrome.storage.local.set({'eula':'false'}, function() {
console.log("False")});
document.getElementById("eulaDisagree").style.display = "block";
}
function agree(){
chrome.storage.local.set({'eula':'true'}, function() {
var eulaV;
console.log("True");
chrome.storage.local.get('eula', function(result){
eulaV = result.eula;
console.log(eulaV);
});
});
document.getElementById("background").style.height = "0%";
document.getElementById("foreground").style.height = "0%";
document.getElementById("foreground").style.border = "none";
}
我不再得到任何错误。
相关文章:
- 如何在ExtJs4应用程序上为视图、存储和模型设置自定义文件夹名称
- 为数据库存储设置角度日期格式
- jQuery 设置和获取下拉列表和输入的本地存储数据
- 设置 HTML 自定义属性与在 ID 属性中存储信息
- 根据下拉值设置本地存储
- 如何在引导模式上设置本地存储
- 如何保存从单击this.nameClass动态设置的本地存储
- AngularJS设置本地存储(object json)
- 本地存储设置初始数据
- 将本地存储项设置为值'span'标签
- 如何读取存储在图像的数据src中的URL,并在另一个img控制器的src中设置该URL onclick
- 将对象设置为Chrome存储
- 设置存储在变量中的元素的属性
- 如何将javascript变量设置为php变量并将其存储在数据库中
- 如何将 HTML 的本地存储设置为整数而不是字符串
- 在量角器测试中从本地存储设置项目
- HTML5;绕过“;本地存储设置
- 不能与本地存储设置值
- 使用本地存储设置视图 MVC 中的值
- 如何 如果未定义,请将本地存储设置为 0