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上面对同样的问题,你们找到解决方案了吗?