Пишу расширение для Firefox, в нём есть окошко с двумя textbox'ами login и password, для быстрой авторизации на сайте...
На сайте тоже есть эти самые поля для ввода (<input> тэг) login и password...
Когда на сайт входишь несколько раз под разными логинами, то по дабл клику или если ввести начало уже вводимого логина, появляется всплывающее меню с доступными вариантами и при выборе одного из них заполняются оба поля...
А теперь вопрос...
Как сделать так чтобы мой textbox выдавал мне для выбора те же самые значения введённые в форме на сайте?
Хотелось бы услышать решение без ручного заполнения поля login с помощью nsIPasswordManager...
Заранее спасибо!

http://www.xulplanet.com/forum2/viewtop … letesearch

Спасибо!
Сделал по аналогии... но осталась небольшая проблемка...
Когда отобразился выпадающий список с доступными вариантами и пользователь остановился на каком-то элементе, а затем нажал delete, то из доступных вариантов он удалится и больше появляться не будет, т.е. из истории форм этот элемент удалён, но запись в хранилище паролей остаётся... отсюда и вопрос - как узнать какой элемент был удалён, чтобы удалить и соответствующую запись в хранилище паролей?

как узнать какой элемент был удалён

http://pastebin.mozilla-russia.org/90008

Ещё раз спасибо!
Моя ошибка была в том что я пытался ловить не onkeydown, а onkeypress... и DELETE ко мне не приходил...

Возникла ещё одна проблемка...
Когда нажимаешь на кнопку submit на сайте, то вылазит диалог с тремя вариантами "Запомнить", "Никогда для этого сайта" и "Не сейчас"...
Уверен что есть какая-нибудь уже написанная функция в браузере которая вызывает этот диалог, но вот только я никак не могу его найти...
Может кто уже нашёл?

Также хотелось бы чтобы по двойному клику появлялся этот выпадающий список...
Никак не получается это сделать... уже даже пробовал эмулировать нажатие кнопки вниз, но так ничего и не получилось...
Вот неработающий вариант с нажатием кнопки...

Выделить код

Код:

function DblClick( event )
{
	var email = document.getElementById( "login_email" );

	var new_event = document.createEvent( "KeyboardEvent" );
	new_event.initKeyEvent( "keydown", true, true, event.view, false, false, false, false, new_event.DOM_VK_DOWN, 0 );
	email.dispatchEvent( new_event ); // Первый вариант
	//email.inputField.dispatchEvent( new_event ); // Второй вариант

	var new_event = document.createEvent( "KeyboardEvent" );
	new_event.initKeyEvent( "keyup", true, true, event.view, false, false, false, false, new_event.DOM_VK_DOWN, 0 );
	email.dispatchEvent( new_event ); // Первый вариант
	//email.inputField.dispatchEvent( new_event ); // Второй вариант
}

Также хотелось бы чтобы по двойному клику появлялся этот выпадающий список...

Если известен id этого списка, то, полагаю, можно так:

Выделить код

Код:

<чтото-там ondblclick="addPopup(this)" />
function addPopup(it) {
    it.setAttribute("popup", "elementId");
}
XuTMAH пишет

...Вот неработающий вариант с нажатием кнопки...

Реализация autocomplete не обрабатывает событие keydown, только keypress. Если создать keypress - заработает.

Можно и без события:

Выделить код

Код:

controller. handleKeyNavigation (controller. KEY_DOWN);
Infocatcher  пишет

Если известен id этого списка, то, полагаю, можно так:

Нет, id не известен, т.к. следующий код возвращает пустую строку...

Выделить код

Код:

event.target.QueryInterface( Components.interfaces.nsIAutoCompleteInput ).popup.id
Anton  пишет

Реализация autocomplete не обрабатывает событие keydown, только keypress. Если создать keypress - заработает.

Опять я с событиями не угадал :)

Anton  пишет

Можно и без события:

Этот вариант работает как нельзя лучше!!!


Осталась проблема с подтверждение на сохранение паролей...