Я создал веб-приложение, которое использует раскрывающийся список тегов. Это прекрасно работает во всех браузерах, кроме браузера Chrome (версия 21.0.1180.89).
Несмотря на то, что оба input
поля И form
поле, имеющее autocomplete="off"
атрибут, Chrome настаивает на том, чтобы в раскрывающемся списке предыдущих записей для этого поля был удален список тегов.
html
google-chrome
autocomplete
forms
Мистер фетт
источник
источник
Ответы:
ОБНОВИТЬ
Похоже, теперь Chrome игнорирует атрибуты
style="display: none;"
orstyle="visibility: hidden;
.Вы можете изменить это на что-то вроде:
По моему опыту, Chrome только автозаполнение первого
<input type="password">
и предыдущего<input>
. Итак, я добавил:К началу
<form>
и дело было решено.источник
display: none;
исчезнет элемент, ничего об автозаполнении.Запретить автозаполнение имени пользователя (или адреса электронной почты) и пароля:
Запретить автозаполнение поля ( может не работать ):
Объяснение:
autocomplete
по-прежнему работает,<input>
несмотря на наличиеautocomplete="off"
, но вы можете изменитьoff
на случайную строку, какnope
.Другие «решения» для отключения автозаполнения поля (это не правильный способ, но это работает):
1.
HTML:
JS (нагрузка):
или используя jQuery:
2.
HTML:
JS (нагрузка):
или используя jQuery:
Чтобы добавить более одного поля с помощью jQuery:
Работает в:
Хром: 49+
Firefox: 44+
источник
new-password
хороший улов для любого скрытого ввода, которое на самом деле не является паролем, спасибоautocomplete="nope"
самом деле работал для меня, если я не добавлю его в оба поля формы. Как у меня может быть это в любом поле, и тогда это поле не будет автозаполняться, но другое поле все еще будет автозаполняться, но как только я положу его в оба поля, оба они снова начнут автозаполнение.Похоже, что Chrome теперь игнорирует,
autocomplete="off"
если он не находится на<form autocomplete="off">
теге.источник
Современный подход
Просто внесите свой вклад
readonly
и, в фокусе, удалите его. Это очень простой подход, и браузеры не будут заполнятьreadonly
вводимые данные. Поэтому этот метод принят и никогда не будет перезаписан будущими обновлениями браузера.Следующая часть не обязательна. Стиль вашего ввода соответственно, чтобы он не выглядел как
readonly
вход.РАБОЧИЙ ПРИМЕР
источник
modern approach
. Менее 1% пользователей в мире отключили Javascript. Так что, честно говоря, это не стоит никому уделять время для такой маленькой аудитории, когда подавляющее большинство сайтов используют Javascript. Я давно занимаюсь разработкой веб-сайтов, и 100% моих сайтов используют Javascript и полагаются на него. Если у пользователей отключен Javascript, это их собственная проблема и выбор, а не моя. Они не смогут посещать или использовать по крайней мере 90% веб-сайтов в Интернете, если он отключен ... Ваше отрицательное мнение совершенно не имеет значения.Для надежного обходного пути вы можете добавить этот код на страницу макета:
Chrome учитывает autocomplete = off только тогда, когда в форме есть хотя бы один элемент ввода с любым другим значением автозаполнения.
Это не будет работать с полями пароля - они обрабатываются в Chrome совсем по-другому. См. Https://code.google.com/p/chromium/issues/detail?id=468153 для получения дополнительной информации.
ОБНОВЛЕНИЕ: Ошибка закрыта как «Не будет исправлена» командой Chromium 11 марта 2016 года. См. Последний комментарий в моем первоначально поданном отчете об ошибке , для полного объяснения. TL; DR: использовать семантические атрибуты автозаполнения, такие как autocomplete = "new-street-address", чтобы Chrome не выполнял автозаполнение.
источник
Что ж, немного опоздал на вечеринку, но кажется, что есть некоторое недопонимание о том, как
autocomplete
должно и не должно работать. Согласно спецификациям HTML, пользовательский агент (в данном случае Chrome) может переопределитьautocomplete
:https://www.w3.org/TR/html5/forms.html#autofilling-form-controls:-the-autocomplete-attribute
Так что в случае с Chrome разработчики, по сути, сказали: «Мы оставим это на усмотрение пользователя, чтобы решить в своих предпочтениях, хотят ли они
autocomplete
работать или нет. Если вы этого не хотите, не включайте его в своем браузере» ,Тем не менее, кажется, что это немного чрезмерно с их стороны, на мой взгляд, но так оно и есть. В спецификации также обсуждаются потенциальные последствия такого шага для безопасности:
Поэтому, испытав такое же разочарование, как и все остальные, я нашел решение, которое работает для меня. Это похоже в духе
autocomplete="false"
ответов.Статья в Mozilla говорит именно об этой проблеме:
https://developer.mozilla.org/en-US/docs/Web/Security/Securing_your_site/Turning_off_form_autocompletion
Таким образом, следующий код должен работать:
И так должен каждый из следующих:
Проблема, которую я вижу, заключается в том, что агент браузера может быть достаточно умен, чтобы изучить
autocomplete
атрибут и применить его в следующий раз, когда увидит форму. Если это произойдет, то единственный способ обойти проблему - это динамически изменитьautocomplete
значения атрибута при создании страницы.Стоит отметить, что многие браузеры игнорируют
autocomplete
настройки для полей входа в систему (имя пользователя и пароль). Как говорится в статье Mozilla:Наконец, небольшая информация о том, принадлежит ли атрибут
form
элементу илиinput
элементу. Спецификация снова имеет ответ:Так. Помещение в форму должно применяться ко всем полям ввода. Помещение его в отдельный элемент должно применяться только к этому элементу (даже если его нет в форме). Если
autocomplete
не установлен вообще, по умолчаниюon
.Резюме
Чтобы отключить
autocomplete
всю форму:Или, если вам нужно сделать это динамически:
Отключить
autocomplete
для отдельного элемента (независимо от того, присутствует или нет параметр формы)Или, если вам нужно сделать это динамически:
И помните, что определенные пользовательские агенты могут отвергать даже ваши самые упорные попытки отключить
autocomplete
.источник
Решение в настоящее время заключается в использовании
type="search"
. Google не применяет автозаполнение для ввода с типом поиска.Смотрите: https://twitter.com/Paul_Kinlan/status/596613148985171968
Обновление 04/04/2016: похоже, это исправлено! Смотрите http://codereview.chromium.org/1473733008
источник
Chrome версии 34 теперь игнорирует
autocomplete=off
, смотрите это .Много дискуссий о том, хорошо это или плохо? Каковы ваши взгляды?
источник
Браузер не заботится об autocomplete = off auto или даже вводит учетные данные в неправильное текстовое поле?
Я исправил это, установив поле пароля только для чтения и активировав его, когда пользователь нажимает на него или использует клавишу табуляции в этом поле.
Исправить автозаполнение браузера: только для чтения и установить запись на фокус (при щелчке мышью и переходе по полям)
Обновление: Mobile Safari устанавливает курсор в поле, но не отображает виртуальную клавиатуру. Новое исправление работает, как и раньше, но обрабатывает виртуальную клавиатуру:
Демонстрационная версия https://jsfiddle.net/danielsuess/n0scguv6/
// UpdateEnd
Кстати, больше информации о моих наблюдениях:
Иногда я замечаю это странное поведение в Chrome и Safari, когда поля пароля имеют одинаковую форму. Я полагаю, браузер ищет поле пароля для вставки сохраненных учетных данных. Тогда AutoFills имени пользователя в ближайший textlike-поле ввода, которое появляется перед полем пароля в DOM (только гадать , из - за наблюдение). Поскольку браузер является последним экземпляром, и вы не можете им управлять, иногда даже autocomplete = off не помешает ввести учетные данные в неправильные поля, но не в поле пользователя или псевдонима.
источник
Ты можешь использовать
autocomplete="new-password"
Работает в:
источник
TL; DR: Скажите Chrome, что это новый ввод пароля, и он не будет предоставлять старые в качестве предложений автозаполнения:
autocomplete="off"
не работает из-за дизайнерского решения - многие исследования показывают, что пользователям гораздо дольше и сложнее взламывать пароли, если они могут хранить их в браузере или диспетчере паролей.Спецификация для
autocomplete
изменилась , и теперь поддерживает различные значения для упрощения автоматического заполнения форм входа в систему:Если вы не предоставите эти данные, Chrome все еще пытается угадать, и когда это происходит, он игнорирует
autocomplete="off"
.Решение состоит в том, что
autocomplete
значения также существуют для форм сброса пароля:Вы можете использовать этот
autocomplete="new-password"
флаг, чтобы Chrome не угадывал пароль, даже если он был сохранен для этого сайта.Chrome также может управлять паролями для сайтов напрямую, используя API учетных данных , который является стандартным и, вероятно, в конечном итоге будет иметь универсальную поддержку.
источник
Я решил бесконечный бой с Google Chrome с использованием случайных символов. Когда вы всегда визуализируете автозаполнение со случайной строкой, оно никогда ничего не запомнит.
Надеюсь, что это поможет другим людям.
источник
Autocomplete="Off"
больше не работаетПопробуйте использовать только случайную строку вместо
"Off"
, напримерAutocomplete="NoAutocomplete"
Я надеюсь, что это помогает.
источник
Видно, что хром игнорирует
autocomplete="off"
, я решаю это глупым способом, который использует «фальшивый ввод», чтобы обмануть хром, чтобы заполнить его вместо того, чтобы заполнять «реальный».Пример:
Chrome заполнит «ложный ввод», а при отправке сервер примет значение «реального ввода».
источник
Я публикую этот ответ, чтобы найти обновленное решение этой проблемы. Я в настоящее время использую Chrome 49, и ни один ответ не работает для этого. Я также ищу решение для работы с другими браузерами и предыдущими версиями.
Поместите этот код в начало вашей формы
Затем, для вашего поля реального пароля, используйте
Прокомментируйте этот ответ, если он больше не работает или если у вас возникла проблема с другим браузером или версией.
Утверждено:
источник
всем, кто ищет решение этой проблемы, я наконец-то это выясню.
Chrome выполняет только autocomplete = "off", если страница является страницей HTML5 (я использовал XHTML).
Я преобразовал свою страницу в HTML5, и проблема исчезла (facepalm).
источник
Измените атрибут типа ввода на
type="search"
.Google не применяет автозаполнение для входов с типом поиска.
источник
Вплоть до прошлой недели два приведенных ниже решения работали для Chrome, IE и Firefox. Но с выпуском версии Chrome 48 (и все еще в 49) они больше не работают:
Следующее в элементе ввода пароля:
автозаполнения = «выключено»
Поэтому, чтобы быстро это исправить, сначала я попытался использовать основной метод взлома первоначальной установки элемента ввода пароля как отключенного, а затем использовал setTimeout в функции готовности документа, чтобы включить его снова.
Но это выглядело настолько сумасшедшим, и я провел еще несколько поисков и нашел ответ @tibalts в разделе « Отключение автозаполнения Chrome» . Его ответ заключается в использовании autocomplete = "new-password" при вводе паролей, и это, похоже, работает во всех браузерах (на этом этапе я сохранил исправление 1 выше).
Вот ссылка в обсуждении для разработчиков Google Chrome: https://code.google.com/p/chromium/issues/detail?id=370363#c7
источник
autocomplete=off
в основном игнорируется в современных браузерах - в первую очередь из-за менеджеров паролей и т. д.Вы можете попробовать добавить это,
autocomplete="new-password"
он не полностью поддерживается всеми браузерами, но работает на некоторыхисточник
autocomplete="off"
обычно работает, но не всегда. Это зависитname
от поля ввода. Имена, такие как «адрес», «электронная почта», «имя» - будут заполняться автоматически (браузеры считают, что они помогают пользователям), а такие поля, как «код», «пин-код» - не будут заполняться автоматически (еслиautocomplete="off"
установлено)Мои проблемы были - автозаполнение было возиться с Google помощником адреса
Я исправил это, переименовав это
от
в
Проверено в хроме 71.
источник
Вместо autocomplete = "off" используйте autocomplete = "false" ;)
от: https://stackoverflow.com/a/29582380/75799
источник
Понятия не имею, почему это работает в моем случае, но на Chrome я использовал,
autocomplete="none"
и Chrome перестал предлагать адреса для моего текстового поля.источник
Начиная с Chrome 42, ни одно из решений / хаков в этом потоке (на момент
2015-05-21T12:50:23+00:00
) не работает для отключения автозаполнения для отдельного поля или всей формы.РЕДАКТИРОВАТЬ: я обнаружил, что на самом деле вам нужно только вставить одно пустое поле электронной почты в форму (вы можете скрыть его
display: none
) перед другими полями, чтобы предотвратить автозаполнение. Я предполагаю, что chrome хранит какую-то сигнатуру формы с каждым полем автозаполнения, а включение другого поля электронной почты портит эту подпись и предотвращает автозаполнение.Хорошая новость заключается в том, что поскольку «подпись формы» искажается этим, ни одно из полей не заполняется автоматически, поэтому не требуется JS, чтобы очистить поддельные поля перед отправкой.
Старый ответ:
Единственное, что я нахожу все еще жизнеспособным, это вставить два фиктивных поля типа email и пароль перед реальными полями. Вы можете установить их, чтобы
display: none
скрыть их (это недостаточно умно, чтобы игнорировать эти поля):К сожалению, поля должны быть в вашей форме (в противном случае оба набора вводятся автоматически). Итак, для того, чтобы поддельные поля были действительно проигнорированы, вам понадобится JS для запуска при отправке формы, чтобы очистить их:
Обратите внимание, что очистка значения с помощью Javascript позволяет переопределить автозаполнение. Поэтому, если допустимо потерять правильное поведение с отключенным JS, вы можете упростить все это с помощью автозаполнения JS «polyfill» для Chrome:
источник
У меня была похожая проблема, когда в поле ввода указывалось имя или адрес электронной почты. Я установил autocomplete = "off", но Chrome все еще выдвигал предложения. Оказывается, это произошло потому, что в тексте-заполнителе были слова «имя» и «электронная почта».
Например
Я обошел это, поместив пробел нулевой ширины в слова в заполнителе. Нет больше автозаполнения Chrome.
источник
В Chrome 48+ используйте это решение:
Поместите поддельные поля перед реальными полями:
Скрыть поддельные поля:
Ты сделал это!
Также это будет работать для более старых версий.
источник
autocomplete="off"
наform
теге. Также попробуйте поставить ложные данные сразу послеform
тега.После chrome v. 34 установка
autocomplete="off"
в<form>
тег не работаетЯ внес изменения, чтобы избежать этого раздражающего поведения:
name
иid
из ввода пароляpasswordInput
)(Пока что Chrome не помещает сохраненный пароль на вход, но форма теперь повреждена)
Наконец, чтобы заставить форму работать, включите этот код для запуска, когда пользователь нажимает кнопку отправки или когда вы хотите инициировать отправку формы:
В моем случае я использовал
id="password" name="password"
ввод пароля, поэтому я положил их обратно, прежде чем запускать передачу.источник
Перепробовав все решения, вот то, что, похоже, работает для версии Chrome: 45, с формой, имеющей поле пароля:
источник
Я только что обновился до Chrome 49, и решение Diogo Cid больше не работает.
Я сделал другой обходной путь, скрывая и удаляя поля во время выполнения после загрузки страницы.
Теперь Chrome игнорирует исходный обходной путь, применяя учетные данные к первому отображаемому
type="password"
полю и его предыдущемуtype="text"
полю, поэтому я скрыл оба поля с помощью CSSvisibility: hidden;
Я знаю, что это может показаться не очень элегантным, но это работает.
источник
я нашел это решение наиболее подходящим:
Он должен быть загружен после того, как DOM готов, или после того, как форма рендеринга.
источник
Хотя я согласен с тем, что автозаполнение должно быть выбрано пользователем, бывают случаи, когда Chrome слишком увлечен этим (другие браузеры тоже могут). Например, поле пароля с другим именем по-прежнему автоматически заполняется сохраненным паролем, а предыдущее поле заполняется именем пользователя. Это особенно неприятно, когда форма является формой управления пользователями для веб-приложения, и вы не хотите, чтобы автозаполнение заполняло ее вашими учетными данными.
Chrome полностью игнорирует autocomplete = "off". Хотя взломы JS могут хорошо работать, я нашел простой способ, который работает во время написания:
Установите значение поля пароля для управляющего символа 8 (
"\x08"
в PHP или
в HTML). Это останавливает автоматическое заполнение поля Chrome, поскольку оно имеет значение, но фактическое значение не вводится, потому что это символ возврата.Да, это все еще взлом, но это работает для меня. YMMV.
источник
form
для создания новых и редактирования существующих пользователей, просто переопределивinput
значения через JS, удалил автозаполнение.