Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

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

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

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

Чтобы подвести итог, Firefox не нуждается в атрибутах ID, имени или класса, чтобы угадать, в каком поле находится логин или пароль. Он просто полагается на типы и порядок полей формы.

Ответ 2

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

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

Ответ 3

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

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

Ответ 4

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

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