Сохранять историю раскрывающегося списка на панели инструментов Firefox

StackOverflow https://stackoverflow.com/questions/120170

  •  02-07-2019
  •  | 
  •  

Вопрос

Ради обучения я провожу тестирование панелей инструментов 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top