Поскольку для получения ответа требуется совсем немного, я пошел и исследовал его сам.
Вот что у меня сейчас. Мне не все ясно, но это работает.
Давайте предположим, что у вас есть на вашем .xul:
<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, называемый «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);
}
Это абсолютный минимум для продолжения истории.