Поскольку я принимаю совсем немного, чтобы получить ответ, я пошел и исследовал его сам. Вот что у меня есть. Не все мне понятно, но это работает.
Давайте предположим, что у вас есть < текстовое поле >, как это, на ваш .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». Я пробовал «событие», и это не сработало.
Но это само по себе не будет работать. Нужно добавить некоторые 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);
}
Это абсолютный минимум, чтобы история происходила.
Спасибо, Джейсон, исправлено. В следующий раз вы могли бы использовать комментарии, а не ответ? – 2009-08-14 01:00:41