【问题标题】:Firefox SDK simple storage loses associative array data after restartFirefox SDK 简单存储重启后会丢失关联数组数据
【发布时间】:2014-08-07 13:39:15
【问题描述】:

关于

我正在开发一个带有 Firefox SDK 的插件。在插件中,我使用简单存储存储了一个关联数组。


代码

我用简单的首选项存储的关联数组

var spammer = [];
spammer['id'] = res[0];
spammer['username'] = res[1];
spammer['date'] = res[2];

ss.storage.spammers.push(spammer);

console.log(ss.storage.spammers[i]['id']);
console.log(ss.storage.spammers[i]['username']);
console.log(ss.storage.spammers[i]['date']);

这似乎有效,当加载项处于活动状态时会记录正确的值。

但是,当我在浏览器中运行以下代码时

require("sdk/tabs").on("ready", function(tab) {
    for (i = 0; i < ss.storage.spammers.length; i++) {
        console.log(ss.storage.spammers[i]['id']);
        console.log(ss.storage.spammers[i]['username']);
        console.log(ss.storage.spammers[i]['date']);
    }
});

但现在当我运行代码时,会记录“未定义”值

(前 3 行来自使用 simple-prefs 存储的上一个会话,3 个工作行来自新会话)

  • 生成了正确数量的日志,因此存在正确数量的值
  • 我正确使用了 SDK 配置文件


问题

难道不能用simple-storage来存储关联数组还是有别的问题?

【问题讨论】:

  • “cfx run”是否会发生这种情况,或者安装插件时也会发生这种情况?
  • 当我使用 --profiledir 选项运行 'cfx run' 时会发生这种情况。旧存储数据返回未定义。从当前会话添加的所有数据都返回 OK。

标签: javascript arrays json firefox-addon firefox-addon-sdk


【解决方案1】:

var spammer = [];
spammer['id'] = res[0];
spammer['username'] = res[1];
spammer['date'] = res[2];

ss.storage.spammers.push(spammer);

console.log(ss.storage.spammers[i]['id']);
console.log(ss.storage.spammers[i]['username']);
console.log(ss.storage.spammers[i]['date']);

var spammer = []; 更改为var spammer = {};

【讨论】:

    【解决方案2】:

    解决方案 [作者:erikvold]

    我当前运行的代码:

    if (!ss.storage.spammers)
    {
        ss.storage.spammers = [];
    }
    
    var spammer = {};
    spammer.userid = res[0];
    spammer.username = res[1];
    spammer.date = res[2];
    
    ss.storage.spammers.push(spammer);
    
    console.log(ss.storage.spammers[i].userid);
    console.log(ss.storage.spammers[i].username);
    console.log(ss.storage.spammers[i].date);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-12
      • 1970-01-01
      • 2017-02-17
      相关资源
      最近更新 更多