我有一个扩展,需要来自localstorage的一些数据。 算法: 如果未找到(或为空)数据则alert();并返回;
var storage = chrome.storage.local;
storage.get('data', function(items)
{
if (!items.data.apiKey) { alert('Api key not set!'); return;} // not working
//nextstuff that is not working if there is no items.data.apiKey
}
此代码在Windows上运行良好。在Mac OS中,它不会提醒我,如果它不返回数据则会更快返回。
答案 0 :(得分:0)
我怀疑你的代码不会因OS X而失败。
真正的问题是你正在阅读items.data
的财产。通过这样做,您假设items.data
是非空值(不是null
或undefined
)。这种假设是错误的。
要解决此问题,请添加额外的支票:
chrome.storage.local.get('data', function(items) {
if (!items.data || !items.data.apiKey) {
alert('Api key not set!');
return;
}
});
如果您愿意,还可以设置默认值,如下所示:
chrome.storage.local.get({data: 'default value'}, function(items) {
/* ... */
});