0

为了学习,我正在对 Firefox 工具栏进行一些测试,但我找不到有关如何在用户个人资料中存储“搜索”下拉菜单内容的任何信息。

有没有关于如何解决这个问题的教程?

4

3 回答 3

1

因为要花很多时间才能得到答案,所以我自己去调查了。这就是我现在所拥有的。对我来说并非一切都清楚,但它确实有效。

假设您的 .xul 上有一个像这样的 <textbox> :

<textbox id="search_with_history" />

您现在必须添加一些其他属性来启用历史记录。

<textbox id="search_with_history" type="autocomplete"
    autocompletesearch="form-history"
    autocompletesearchparam="Search-History-Name"
    ontextentered="Search_Change(param);"
    enablehistory="true"
 />

这为您提供了在该文本框上启用历史记录的最低要求。
出于某种原因,这就是我的无知显示的地方,onTextEntered 事件函数必须有一个名为“param”的参数。我尝试了“事件”,但没有成功。
但仅凭这一点是行不通的。必须添加一些 Javascript 来帮助完成这项工作。

// This is the interface to store the history
const HistoryObject = Components.classes["@mozilla.org/satchel/form-history;1"]
    .getService(
        Components.interfaces.nsIFormHistory2 || Components.interfaces.nsIFormHistory
    );
// The above line was broken into 4 for clearness.
// If you encounter problems please use only one line.

// This function is the one called upon the event of pressing <enter>
// on the text box
function Search_Change(event) {
    var terms = document.getElementById('search_with_history').value;
    HistoryObject.addEntry('Search-History-Name', terms);
}

这是让历史继续下去的绝对最低要求。

于 2008-09-23T14:31:27.643 回答
0

Gustavo,我想做同样的事情——我在 Mozilla 支持论坛上找到了答案。(编辑:我想保存我的搜索历史是出于兴趣,而不是因为我想了解 Firefox 工具栏的工作原理,如你所说。)

基本上,该数据存储在名为 formhistory.sqlite 的 sqlite 数据库文件中(在您的 Firefox 配置文件目录中)。您可以使用 Firefox 扩展 SQLite Manager 来检索和导出数据:https ://addons.mozilla.org/firefox/addon/5817

您可以将其导出为 CSV(逗号分隔值)文件并使用 Excel 或其他软件打开。

如果您对这些数据感兴趣,这还有一个额外的好处,即还可以保存您在网站上的其他表单/字段中输入的数据的历史记录,例如 Google 上的搜索字段等。

于 2008-10-29T18:58:59.213 回答
0

Gustavo 的解决方案很好,但是document.getElemenById('search_with_history').value; 在 getElementById 中缺少一个“t”

于 2009-01-09T20:33:40.957 回答