在哪里初始化扩展相关数据

时间:2012-08-30 13:02:37

标签: google-chrome-extension

我是新手,试图写一些基础扩展。为了我的扩展工作,我需要初始化一些数据,所以我所做的是在我的background.js我声明了这样的内容。

localStorage["frequency"] = 1; //I want one as Default value. This line is not inside any method, its just the first line of the file background.js

用户可以转到“选项”页面,并使用GUI将上述变量更改为任何值。一旦用户在UI中更改它,就会更新该值。

现在问题在于我的理解background.js每次重启机器时都会重新加载。因此,每次重新启动计算机并打开Chrome时,频率值都会更改为1.为了避免这种情况,我需要初始化此值?

3 个答案:

答案 0 :(得分:1)

您可以使用特定的默认密钥。因此,如果未设置frequency,您可以尝试default-frequency。然后,仍然在background.js中设置或定义默认密钥。

我喜欢一步完成,就像这样的功能

function storageGet(key,defaultValue){
    var item = localstorage.getItem(key);
    if(item === null)return defaultValue;
    else return item;
}

(根据specification localstorage,如果没有设置值,则必须返回null。) 所以对于你的情况,它看起来像

var f = storageGet("frequency",1);

此外,您可能有兴趣查看chrome.storage API。它的使用类似于localstorage,但提供了可能对您的扩展有用的其他功能。特别是它支持跨不同的Chrome浏览器同步用户数据。

编辑我更改了关于apsillers异议的if语句。但是由于规范说它应该是null,我认为检查它而不是未定义是有意义的。

答案 1 :(得分:1)

这是另一种解决方案:

// background.js

initializeDefaultValues();

function initializeDefaultValues() {
    if (localStorage.getItem('default_values_initialized')) {
        return;
    }

    // set default values for your variable here
    localStorage.setItem('frequency', 1);

    localStorage.setItem('default_values_initialized', true);
}

答案 2 :(得分:0)

我认为问题在于你的语法。要获取并设置localStorage值,请尝试使用:

// to set
localStorage.setItem("frequency", 1);

// to get
localStorage.getItem("frequency");