Как запустить автозаполнение сохраненного пароля в браузерах? - PullRequest
10 голосов
/ 12 апреля 2010

У меня есть веб-приложение, написанное на чистом JavaScript (без предварительно сгенерированного HTML, за исключением документа, который загружает все файлы JS).

Это приложение содержит форму входа в систему, которая создается динамически, когда происходит событие события document.ready. Я заставляю браузер отображать «Запомнить пароль?» диалоговое окно путем отправки формы входа в скрытый iframe перед входом с использованием ajax (в Firefox пароль отображается в списке сохраненных паролей, поэтому эта часть, очевидно, работает), но сохраненные пароли никогда не заполняются после повторной загрузки экрана входа в систему позднее. время. То же самое происходит в Firefox и Safari.

Есть ли что-то, что я могу сделать или какую-то функцию, которую я могу вызвать, чтобы вызвать автозаполнение?

ОБНОВЛЕНИЕ: автозаполнение работает в Safari при начальной загрузке страницы, но не тогда, когда пользователь выходит из системы и форма входа создается заново без перезагрузки страницы. В Firefox это никогда не работает.

Ответы [ 3 ]

4 голосов
/ 19 апреля 2010

В дополнение к обертыванию элементов формы в элементе form убедитесь, что все входные данные (и, возможно, даже форма) имеют уникальные атрибуты name и id, которые не меняются. Возможно, имя должно быть чем-то описательным, например, password для пароля и т. Д., Не совсем уверенно, в какой степени браузеры используют эту информацию, но функции «autosuggest» / «magic wand» могут работать лучше, если вы используете стандартное имя.

И, конечно, вы должны убедиться, что вы не устанавливаете для атрибутов autosuggest / autofill значение false (фреймворк js может сделать это по некоторым причинам, если вы их используете).

Третья возможность заключается в том, что некоторые браузеры могут выполнять автозаполнение перед загрузкой вашего скрипта и записывать форму на страницу, попробуйте создать статическую HTML-версию формы и посмотреть, работает ли , .

Самое простое решение (если статические формы работают) состоит в том, чтобы принудительно перезагрузить страницу при выходе из системы (вы, вероятно, все равно хотите отменить «состояние» работающего javascript после выхода из системы, так что обновление действительно полезно)

1 голос
/ 12 апреля 2010

В некоторых браузерах требуется тег «form» для включения локального хранения имени пользователя и пароля. Была такая же проблема в приложении AJAX, и в моем случае я просто добавил

<form>...</form>

теги.

0 голосов
/ 12 апреля 2010

Разве вы не можете использовать подобный прием - используйте iframe для загрузки формы, а затем, когда форма входа в систему отправлена, вы в действительности отправляете форму iframe, которая будет содержать сохраненный пароль.

Чтобы пароль отображался в видимой форме, я думаю, вы могли бы измерить длину пароля в форме iframe, а затем заполнить поле пароля видимой формы тем же числом *.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...