2011-12-26 9 views
0

フォーム履歴に特定の名前のすべての要素を見つける方法はありますか?私のfirefoxアドオンでは、特定の名前のフォーム履歴にいくつかの要素を追加しています - "search-description"と言わないようにしてください。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) 

私は履歴オブジェクトを得ることができることを参照してください?

答えて

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); 

注非同期APIを使用すると、データベースに時間がかかる場合があります照会、ここで推奨されていること。

関連する問題