获取firefox表单历史记录中给定名称的所有条目

时间:2011-12-26 15:05:28

标签: firefox firefox-addon

有没有办法可以找到历史记录中给定名称的所有元素。在我的firefox插件中,我在表单历史中添加了一些特定名称下的元素 - 以免说“搜索描述”。

我现在想要获得我在此名称下添加的所有元素。我看到我可以得到一个历史对象:

this.Ci = Components.interfaces;
this.Cc = Components.classes;
var historyObj = this.Cc["@mozilla.org/satchel/form-history;1"].getService(this.Ci.nsIFormHistory2 || this.Ci.nsIFormHistory);

但nsIFormHistory或nsIFormHistory2接口没有任何函数,如:

getAllEntries(name)

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

通常,nsIFormHistory2.DBConnection属性用于查询,您可以直接访问SQLite表。像这样(未经测试):

var completionListener =
{
  handleCompletion: function(reason) {},
  handleError: function(error) {},
  handleResult: function(result)
  {
    var values = [];
    while (true)
    {
      var row = result.getNextRow();
      if (!row)
        break;
      values.push(row.getResultByName("value"));
    }
    alert("Autocomplete values: " + values);
  }
};
var query = "SELECT value " +
            "FROM moz_formhistory " +
            "WHERE fieldname='search-description'";
var statement = historyObj.DBConnection.createAsyncStatement(query);
historyObj.DBConnection.executeAsync([statement], 1, completionListener);

请注意,此处建议使用async API,查询数据库可能需要一些时间。