chrome.storage.local中的错误似乎仅影响Mac OS X上的扩展?

时间:2014-05-01 09:26:17

标签: macos google-chrome-extension

我正在尝试设置,稍后请求在扩展名

中本地存储的数据

我这样做的方式是从内容脚本发送请求,如下所示

chrome.runtime.sendMessage({method: "fetchData"}, doSomething)

在后台页面上,消息由以下方式接收和解析:

chrome.runtime.onMessage.addListener(getData);

其中getData是一个函数,如下所示:

var getData = function(message, sender, sendResponse) {
    if (message.method == "fetchData"){
        chrome.storage.local.get('myinfo',function(items){
            console.log(items);
            if (items.myinfo){
                sendResponse({status: items.myinfo});
            } else {
                sendResponse({status: items.myinfo});
            }
        }); //storage.local.get
    }
    return true;
}

现在第一次运行此存储时,存储为空,因此items是一个空对象{}

因此,items.myinfo未定义

在Linux上测试我的chrome安装时确实如此。

但是,在Mac上运行Chrome扩展程序时(下面的OS X 10.9.2标题)...

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36 module=default version=1

...后台页面吐出以下错误:

Error in response to storage.get: TypeError: Cannot read property 'myinfo' of undefined

事实证明,在这种情况下,项目是未定义的,而不是空对象。

我试图找出是否检查未定义的项目,然后使用一些数据填充chrome.storage.local ......

storage.set({'myinfo': message.key}, function() {
    });

...有助于解决问题,或者是否继续存在。

为什么chrome.local.storage.get的这种行为在不同的操作系统上有所不同。我错过了一些明显的东西吗?

0 个答案:

没有答案