从内容脚本向主插件脚本发送数组

时间:2014-02-13 16:43:03

标签: firefox-addon firefox-addon-sdk add-on

我删除了主脚本中存储在simple-storage数组中的元素。这会在simple-storage数组中创建null元素。所以我运行一个脚本将一个新数组返回到主addon脚本(它不包含null元素)和我将它分配给简单存储阵列。但主脚本只获得一个元素而不是整个数组。如何获得整个阵列? 下面是主要的插件代码部分:

text_entry.port.on("del", function (todel) {
  console.log(todel);
  site_l=ss.storage.sites.length;

  for(var i=0;i<site_l;i++)
  {
    if(ss.storage.sites[i]==todel)
    {
        delete ss.storage.sites[i];
    }   
  }
  text_entry.port.emit("c",ss.storage.sites);
  text_entry.port.on("cd",function(arr){
    ss.storage.sites=[];
    ss.storage.sites=arr;
  });

});

脚本,它返回不包含空元素的新数组:

self.port.on("c",function(arr)
{
    var a=arr;
    var l=a.length;

    function isEmpty(element) {
    if(element!=null)
      return true;
    }

    a=a.filter(isEmpty);
    self.port.emit("cd",a);
});

1 个答案:

答案 0 :(得分:1)

替换

for(var i=0;i<site_l;i++) {
  if(ss.storage.sites[i]==todel) {
    delete ss.storage.sites[i];
  }   
}

使用ss.storage.sites.splice(ss.storage.sites.indexOf(todel), 1)