为了学习,我正在对 Firefox 工具栏进行一些测试,但我找不到有关如何在用户个人资料中存储“搜索”下拉菜单内容的任何信息。
有没有关于如何解决这个问题的教程?
因为要花很多时间才能得到答案,所以我自己去调查了。这就是我现在所拥有的。对我来说并非一切都清楚,但它确实有效。
假设您的 .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);
}
这是让历史继续下去的绝对最低要求。
Gustavo,我想做同样的事情——我在 Mozilla 支持论坛上找到了答案。(编辑:我想保存我的搜索历史是出于兴趣,而不是因为我想了解 Firefox 工具栏的工作原理,如你所说。)
基本上,该数据存储在名为 formhistory.sqlite 的 sqlite 数据库文件中(在您的 Firefox 配置文件目录中)。您可以使用 Firefox 扩展 SQLite Manager 来检索和导出数据:https ://addons.mozilla.org/firefox/addon/5817
您可以将其导出为 CSV(逗号分隔值)文件并使用 Excel 或其他软件打开。
如果您对这些数据感兴趣,这还有一个额外的好处,即还可以保存您在网站上的其他表单/字段中输入的数据的历史记录,例如 Google 上的搜索字段等。
Gustavo 的解决方案很好,但是document.getElemenById('search_with_history').value; 在 getElementById 中缺少一个“t”