Вопрос по html – Почему Firefox автозаполняется даже с другим именем ввода?

15

Или Как Firefox определяет, куда идет пароль / имя пользователя?

Если я меняю имя, идентификатор, заголовок, класс элемента ввода, Firefox продолжает заполнять его паролем или электронной почтой.

Ваш Ответ

4   ответа
3

Похоже, что использование отключенного ввода текста между логином и паролем делает свое дело хорошо:

<input type="text" disabled="disabled" style="display:none">
3

Это единственные два элемента в форме? Firefox, вероятно, хранит структуру формы (два поля ввода, одно помечено как нормальное, одно помечено как пароль) и заполняет сохраненную информацию независимо от идентификатора элементов ввода.

Попробуйте это: добавьте дополнительный элемент ввода в форму и посмотрите, что произойдет. Либо Firefox не будет ничего заполнять, либо вы найдете свое имя в первом поле и поле пароля заполненным, в то время как второй элемент ввода пуст.

26

Если я правильно понимаю исходный код Firefox, браузер сначала ищет поля пароля в формах. Если форма содержит более 3 полей пароля, функция автозаполнения игнорирует эту форму.

После того как найдены от 1 до 3 полей пароля, браузер ищет поле для входа. Браузер выполняет обратный поиск, начиная с первого поля пароля, и предполагает, что поле входа является первым найденным полем типаtext или жеemail или жеurl или жеtel или жеnumber.

Следующий шаг зависит от того, проверяем ли мы формы при загрузке страницы или при отправке формы. Если мы проверяем во время загрузки страницы и есть поле для входа в систему и точно ОДНО поле для пароля, случай прост, и браузер может заполнить форму.

В других случаях (отправка формы или более одного поля пароля) некоторые & # x201C; smart & # x201D; логика для определения того, какое поле пароля содержит новый пароль, а какое - старый пароль, возможно, для обновления сохраненных паролей). Если вас интересуют подробности, загрузите исходный код и откройтеtoolkit/components/passwordmgr/nsLoginManager.js файл. Функции для проверки_fillForm, _getFormFields а также_getPasswordFields.

Подводя итог, Firefox не нуждается ни в каком идентификаторе, имени или атрибуте класса, чтобы угадать, какое поле является логином или паролем. Это зависит только от типов и порядка полей формы.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded:/
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
6

Я попробовал простое решение, которое работает до сих пор. Создайте 2 скрытых поля, и браузер автоматически их заполнит.

<input type="text" style="display: none">
<input type="password" style="display: none">

Похожие вопросы