Сохранять историю раскрывающегося списка на панели инструментов Firefox
Вопрос
Ради обучения я провожу тестирование панелей инструментов Firefox и не могу найти никакой информации о том, как хранить содержимое раскрывающегося списка «Поиск» внутри профиля пользователя.
Есть ли какое-нибудь руководство о том, как разобраться в этом?
Решение
Поскольку получение ответа занимает довольно много времени, я пошел и расследовал этот вопрос сам.Вот что у меня есть сейчас.Мне не все понятно, но это работает.
Предположим, у вас есть такой <textbox> в вашем .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);
}
Это абсолютный минимум для продолжения истории.
Другие советы
Густаво, я хотел сделать то же самое - я нашел ответ здесь на форумах поддержки Mozilla.(Редактировать:Я хотел сохранить историю поиска из интереса, а не потому, что хотел узнать, как работают панели инструментов Firefox, как вы сказали.)
По сути, эти данные хранятся в файле базы данных sqlite под названием formhistory.sqlite (в каталоге вашего профиля Firefox).Вы можете использовать расширение SQLite Manager для Firefox для получения и экспорта данных: https://addons.mozilla.org/firefox/addon/5817
Вы можете экспортировать его в виде файла CSV (значения, разделенные запятыми) и открыть его в Excel или другом программном обеспечении.
Это дает дополнительное преимущество: также сохраняется история данных, которые вы ввели в другие формы/поля на сайтах, такие как поле поиска в Google и т. д., если эти данные вас интересуют.
Решение Густаво хорошее, но document.getElemenById('search_with_history').value; отсутствует буква «t» в getElementById