Я только что обнаружил, что если у вас есть запоминающееся имя пользователя и пароль для сайта, текущая версия Chrome автоматически запустит ваше имя пользователя / адрес электронной почты в поле до любого поля type=password
. Не важно, что называется полем - просто принимает поле до того, как пароль будет вашим именем пользователя.
Old Solution
Просто используйте <form autocomplete="off">
, и это предотвращает предварительную загрузку пароля а также любое эвристическое заполнение полей на основе допущений, которые может сделать браузер (которые часто ошибочны). В отличие от использования <input autocomplete="off">
, который, похоже, в значительной степени игнорируется автозаполнением пароля (в Chrome, который Firefox выполняет его).
Обновленное решение
Chrome теперь игнорирует <form autocomplete="off">
. Поэтому мое первоначальное обходное решение (которое я удалил) теперь все в ярости.
Просто создайте пару полей и сделайте их скрытыми с помощью «display: none». Пример:
<!-- fake fields are a workaround for chrome autofill getting the wrong fields -->
<input style="display:none" type="text" name="fakeusernameremembered"/>
<input style="display:none" type="password" name="fakepasswordremembered"/>
Затем поместите свои реальные поля внизу.
Не забудьте добавить комментарий или другие люди в вашей команде задаться вопросом, что вы делаете!
Обновить март 2016
Просто протестирован с последним Chrome - все хорошо. Это довольно старый ответ, но я хочу просто упомянуть, что наша команда уже много лет использует его на десятках проектов. Он по-прежнему отлично работает, несмотря на несколько комментариев ниже. Нет проблем с доступностью, потому что поля display:none
означают, что они не получают фокуса. Как я уже говорил, вам нужно поставить перед вашими реальными полями.
Если вы используете javascript для изменения вашей формы, вам понадобится дополнительный трюк. Покажите поддельные поля, пока вы манипулируете формой, а затем снова скройте их через миллисекунду позже.
Пример кода с использованием jQuery (если вы дадите свои поддельные поля классу):
$(".fake-autofill-fields").show();
// some DOM manipulation/ajax here
window.setTimeout(function () {
$(".fake-autofill-fields").hide();
},1);
Обновление июля 2018 г.
Мое решение больше не работает так хорошо, Эксперты по анти-юстиции Chrome очень усердно работали. Но они бросили нам кость в виде:
<input type="password" name="whatever" autocomplete="new-password" />
Это работает и в основном решает проблему.
Однако это не работает, когда у вас нет поля пароля, но только адрес электронной почты. Это также может быть трудно заставить его перестать желтеть и предварять. Решение фальшивых полей может быть использовано для исправления этого.
На самом деле вам иногда нужно сбросить два лота поддельных полей и попробовать их в разных местах. Например, у меня уже были поддельные поля в начале моей формы, но Chrome недавно начал заполнять поле «Электронная почта» снова, поэтому я удвоил и добавил больше фальшивых полей непосредственно перед полем «Электронная почта» и исправил его , Удаление первой или второй партии полей возвращается к некорректному избыточному автозаполнению.
Один из способов сделать это:
Сохранить ответы формы Google в электронной таблице. Как связаться .
Настройте внешнюю таблицу BigQuery в соответствии с Запросом таблицы Google Sheets из BigQuery .
(Необязательно) Используйте CREATE TABLE ... AS SELECT , чтобы скопировать данные в BigQuery. (Может также быть запланированным запросом BigQuery).
Обратите внимание, что с 1) и 2) делается. Вам не нужна ни одна строка «кода» для подачи ответа вашей формы на BigQuery. Это просто вопрос.