选项页面上的localStorage为null

时间:2013-08-15 01:49:55

标签: javascript google-chrome-extension

在chrome扩展程序的选项页面中,localStorage为null,因此无法使用 以下是解压扩展产生错误的文件。

的manifest.json

{
    "name": "someTest",
    "version": "1.0",
    "manifest_version": 2,
    "description": "Not important",
    "icons": {
        "16": "icon16.png",
        "48": "icon48.png"
    },
    "options_page": "options.html"
}

options.html

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Just a test</title>
</head>
<body>
    <script src="options.js"></script>
</body>
</html>

options.js

console.log(localStorage);

访问选项页面,控制台输出null。尝试使用localStorage['property']更改或访问属性时,由于localStorage为null,因此会抛出错误。

我尝试了类似localStorage = {property: 'value'};之类的东西,但是在localStorage仍然为null之后它没有改变任何东西。

我在Windows 8上使用chrome 28.0.1500.95。

修改:问题仍然存在。但是,我 - 暂时 - 使用替代方案,如果它可以帮助某人。我现在使用chrome存储。

以下是它的工作原理。

的manifest.json

"permissions": ["storage"]

options.js

//You can also use an array of strings instead of 'property' to get multiple values.
chrome.storage.local.get('property', function(data)
{
    if(!data.propery) return; //Not set
    console.log(data.property);
});
chrome.storage.local.set({property: 'value'}, function()
{
    console.log('saved');
});
//It can be used the same way directly in content scripts.

1 个答案:

答案 0 :(得分:0)

您可以通过background page

访问它
chrome.runtime.getBackgroundPage(function(win) {
   console.log(win.localStorage.property);
});

注意:我没有看到你看到的问题。我只是建议一个可能的解决方法。