Как определить, были ли заполнены какие-либо элементы формы с помощью автозаполнения? - PullRequest
3 голосов
/ 12 мая 2011

У меня есть форма входа в систему, где мне нужно сделать следующее:

  • разрешить автозаполнение, чтобы пользователи, которые хотят войти в систему без ввода, могли продолжать делать это
  • определить, было ли автозаполнение выполненоиспользуется в форме, поэтому, когда пользователь позже пытается получить доступ к частям сайта, требующим входа в систему без автозаполнения, я только запрашиваю пользователя войти снова (с другой версией формы входа, которая вместо этого НЕ позволяет автозаполнение), если они использовали автозаполнение напервая форма

В настоящее время я не нашел способа надежно определить, использовалось ли автозаполнение (IE, Firefox, Chrome, панель инструментов Google и т. д. -> любой механизм, с помощью которого поля формызаполнение без ввода пользователем будет считаться здесь как «автозаполнение»).Поэтому сейчас я просто позволяю пользователям входить в систему в первый раз без автозаполнения (поскольку это является важным бизнес-требованием), а затем предлагать им войти в систему из формы с автозаполнением, когда они попадают на чувствительную часть сайта, даже если онина самом деле набрал свои имя пользователя и пароль в первой форме.

Если кто-нибудь найдет надежный способ обнаружить (не блокировать) все формы автозаполнения, я хотел бы услышатьоб этом.

Спасибо!

1 Ответ

0 голосов
/ 26 апреля 2012

Я ненавижу это говорить, но вы не можете, и, что более важно, вы (разработчик) тоже не сможете.

Вы должны представить себе, что автозаполнение, встроенное в браузеры сегодня, - это старые приложения автозаполнения прошлых лет. Они находились вне влияния DOM браузера и буквально опрашивали известные окна на предмет известных свойств, то есть форм, и отправляли нажатия клавиш непосредственно, как если бы пользователь их набрал.

Текущие браузеры имеют встроенные опции автозаполнения, но они все еще нестандартны, как старые приложения, и поэтому (не) надежно обнаруживаются.

Либо игнорируйте их, либо всегда оставляйте пустые поля ввода через JavaScript.

...