Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos chrome.storage.local中的漏洞似乎只影响Mac OS X上的扩展?_Macos_Google Chrome Extension - Fatal编程技术网

Macos chrome.storage.local中的漏洞似乎只影响Mac OS X上的扩展?

Macos chrome.storage.local中的漏洞似乎只影响Mac OS X上的扩展?,macos,google-chrome-extension,Macos,Google Chrome Extension,我正在尝试设置并稍后请求本地存储在扩展中的数据 我这样做的方式是从内容脚本发送请求,如下所示 chrome.runtime.sendMessage({method: "fetchData"}, doSomething) 在后台页面上,消息由以下人员接收和解析: chrome.runtime.onMessage.addListener(getData); 其中getData是一个函数,如下所示: var getData = function(message, sender, sendRespo

我正在尝试设置并稍后请求本地存储在扩展中的数据

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

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安装时,情况确实如此

然而,当在下面的MacOSX10.9.2头上运行chrome上的扩展时

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
事实证明,在这个实例中,items是未定义的,而不是空对象

我试图弄清楚是否检查未定义的项,然后用一些数据填充chrome.storage.local

storage.set({'myinfo': message.key}, function() {
    });
。。。帮助解决问题,或者如果问题继续存在


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

你能换一下console.logitems;到console.logitems,chrome.runtime.lastError;然后发布你收到的错误消息?我是说在同一个浏览器上。只有在发生错误时,项才是未定义的。很抱歉,该注释已提前发布。我们无法在运行Max OS X 10.9.2的不同计算机上的同一版本的Chrome上复制该错误。上述错误消息是在报告错误后发送给我们的扩展用户。我们已经请求用户在添加这个错误消息之后,在不同的平台上为什么不同,C++不是一个写一次运行的任何平台。因此,开发人员必须为Windows、Linux和Mac OS以及他们支持的任何其他平台编写渲染代码。所以有人可能没有遵循规范,这是一个错误。。。你应该在上提交一个问题。在mac上最新的chrome 55.0.2883.95上面对同样的问题,你们找到解决方案了吗?