Как отключить Chrome для автозаполнения имени пользователя / пароля электронной почты?

Я знаю, что его ответили много раз на SO, но это для более старых версий Chrome.

У меня Chrome версии 53.0.2785.143.

Я хочу отключить Chrome для автозаполнения полей пароля,

Я перепробовал все методы, упомянутые в старых ответах SO,

Способ 1:

Пробовал с использованием поддельных паролей имени пользователя.

<input style="display:none" type="text" name="fakeusernameremembered"/>
<input style="display:none" type="password" name="fakepasswordremembered"/>

Способ 2:

Пробовал с помощью autocomplete='new-password' а также autocomplete='false' а также autocomplete='off'

Но ничего из этого не работает.

20 ответов

Попробуй это display:none

<input type="text" name="prevent_autofill" id="prevent_autofill" value="" style="display:none;" />
<input type="password" name="password_fake" id="password_fake" value="" style="display:none;" />
<input type="password" name="password" id="password" value="" />

Вы также можете использовать jQuery Чтобы решить эту проблему, надеюсь, это поможет вам, если нет, пожалуйста, оставьте комментарий здесь, удачи:)

Обновить:

Это зависит от версии Chrome, иногда это не будет работать для новых версий Chrome, поэтому вам следует попробовать много вещей, чтобы предотвратить эту проблему, попробовать эти фрагменты кода и, пожалуйста, оставить комментарий, что случилось:)

Решение 2

$('form[autocomplete="off"] input, input[autocomplete="off"]').each(function () {

                var input = this;
                var name = $(input).attr('name');
                var id = $(input).attr('id');

                $(input).removeAttr('name');
                $(input).removeAttr('id');

                setTimeout(function () {
                    $(input).attr('name', name);
                    $(input).attr('id', id);
                }, 1);
            });

Он удаляет атрибуты "name" и "id" из элементов и присваивает их обратно через 1 мс. Поместите это в документ, будьте готовы.

Решение 3

<input type="text" name="email">
<input type="password" name="password" autocomplete="new-password">

Проверено и работает в Chrome 53

Решение 4

пытаться autocomplete="false" вместо autocomplete="off" или же nofill

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

ты должен использовать

autocomplete = "new-password"

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

Вы можете увидеть все значения автозаполнения здесь для справки и лучшего понимания.

Простое альтернативное решение

Я также столкнулся с этой проблемой, и по состоянию на 22 мая 2020 года я не мог найти способ заставить свое веб-приложение не заполнять поле пароля, поэтому я нашел альтернативу этому, вот она:

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

style="text-security:disc; -webkit-text-security:disc;"

Пример:

Это так же просто, как изменить:

<input type="password">

кому:

<input type="text" style="text-security:disc; -webkit-text-security:disc;">

или даже больше, вы можете опустить атрибут type:

<input style="text-security:disc; -webkit-text-security:disc;">

Ура!

Я не добился успеха, пока не обернул свой ввод формой

  1. Добавьте атрибут автозаполнения со значением имени пользователя для имен пользователей.
  2. Если вы реализовали поток входа в систему "сначала по электронной почте", который разделяет имя пользователя и пароль на две отдельные формы, включите поле формы, содержащее имя пользователя, в форму, используемую для сбора пароля. Конечно, вы можете скрыть это поле с помощью CSS, если это подходит для вашего макета.
  3. Добавьте атрибут автозаполнения со значением current-password для поля пароля в форме входа.
  4. Добавьте атрибут автозаполнения со значением new-password для поля пароля в формах регистрации и смены пароля.
  5. Если вам требуется, чтобы пользователь дважды вводил свой пароль во время регистрации или обновления пароля, добавьте атрибут автозаполнения нового пароля в оба поля.

    <input type="text" autocomplete="username">
    <input type="password" autocomplete="current-password">
    

Chrome будет автоматически заполнять пароль только при вводе type="password" - в противном случае это может привести к раскрытию пароля пользователя в виде простого текста. Итак, используйте type="text" в поле ввода, а затем измените атрибут типа на "password" когда пользователь фокусируется на вводе.

Поле пароля:

<input type="text" class="form-control" placeholder="Password"
    onfocus="this.setAttribute('type', 'password')" />

Полный пример:(используя классы Bootstrap 3 и иконки Font Awesome)

<form>
    <div class="form-group">
        <input type="text" class="form-control" placeholder="Email Address" />
    </div>
    <div class="form-group">
        <input type="text" class="form-control" placeholder="Password" 
            onfocus="this.setAttribute('type', 'password')" />
    </div>
    <div class="text-xs-center">
        <button type="submit" class="btn btn-primary" style="width: 100%;">
            <i class="fa fa-lock" style="padding-right: 10px;"></i> LOG IN
        </button>
    </div>
</form>

В Chrome 87 Чтобы предотвратить автозаполнение Chrome, комбинация трех подходов почти полностью устранила проблему.

  1. Добавить autocomplete='chrome-off'для ввода тегов и тегов формы. В случае помощников форм Rails мне нужно было использовать JS для setAttribute('autocomplete', 'chrome-off') после загрузки страницы

  2. Если некоторые функции автозаполнения / автозаполнения все еще присутствуют (заполните ту же форму несколько раз, чтобы проверить это), добавьте префикс _атрибутировать. В моем случае это было <input name='user[_country]'

  3. Для других языков, кроме английского, некоторые остатки автозаполнения все еще присутствовали. Добавление еще одного подчеркивания в name атрибут помог с этим, т.е. <input ... name='user[_c_ountr_y]'

РЕДАКТИРОВАТЬ:

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

В сценарии, когда администратор хочет изменить адрес электронной почты / пароль пользователя, автоматическое заполнение заменяет электронную почту пользователя на пароль администратора и заполненный пароль администратора.

Что мне помогло, так это отключить поля (электронная почта, пароль...) и активировать их с привязкой через секунду после загрузки страницы. Таким образом, они становятся доступными пользователю после того, как автозаполнение браузера игнорирует их.

Риск состоит в том, что что-то нарушает JS, и они остаются недоступными.

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

В противном случае вот пример кода:

 <input id="email" type="email" name="email" value="email@example.com" disabled>
    <input id="password" type="password" name="password" disabled>

    <script>
    $(document).ready(function(){
         setTimeout(
            function(){
                $('#myform input[diabled]').removeAttr('disabled');
            }, 1000);
    );
    </script>

Прекратите использовать слово "пользователь" для названия поля, например, если вы измените "действие пользователя" на "u-действие", Google перестанет предлагать адрес электронной почты или имя пользователя для этого поля.

Используйте плагин jQuery disableAutoFill

$('#login-form').disableAutoFill();

Документ: https://github.com/terrylinooo/jquery.disableAutoFill

Демо: https://terrylinooo.github.io/jquery.disableAutoFill/

Тот, который работал для меня, был

Если вы используете<label>пытаться<label autocomplete="off">

как автозаполнение браузера на основе метки

Для меня по состоянию на 22.02.2019 я пробовал их, но не получил рабочего решения. Я пробовал сvisibility, display, autocompleteи кажется, что он не работает. Возможно, мне что-то не хватает, поскольку я использую Material UI.

Для меня у меня есть два рабочих решения. Это код JSX, вы можете использовать то же свойство с собственным синтаксисом html css

1) с непрозрачностью и положением

 <input type="email" style={{opacity:"0", position:"absolute"}}/>
 <input type="password" style={{opacity:"0", position:"absolute"}}/>

2) с z-индексом и положением

<input type="email" style={{zIndex:":-100", position:"absolute"}}/>
<input type="password" style={{zIndex:"-100", position:"absolute"}}/>

Надеюсь, это сэкономит чье-то время.

Сначала попробуйте установить поле пароля как

autocomplete="new-password"

Вышеупомянутое решение должно остановить автоматическое заполнение имени пользователя и пароля.

Примечание. Иногда настройка autocomplete="off" для имени пользователя и пароля может не работать.

Это работает в моих браузерах.

      <input
  class="form-control"
  name="user[email]"
  id="user_email"
  type="email"
  placeholder="Enter Email ID"
  value="" ***autocomplete="new-email"***
>

<input
  class="form-control"
  name="user[password]"
  id="user_password"
  placeholder="Enter Password"
  type="password"
  value=""
  ***autocomplete = "new-password"***
>

Очень поздно отвечать на этот вопрос, но ни одно из вышеперечисленных решений не сработало для меня во всех браузерах.

      <input type="email" name="email" id="email" readonly onfocus="this.removeAttribute('readonly');">

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

Одним из возможных решений этой проблемы может быть первоначальная установка типа ввода "text", а затем добавление прослушивателя событий для ввода, который обновляет тип до "password" после редактирования поля. Это позволит вам сохранить все функции ввода пароля и, надеюсь, обойти любые автозаполнения / менеджеры паролей. Что-то вроде:

HTML

<input type='text' class='my-input' />

JS

const input = document.querySelector('.my-input');

input.addEventListener('keydown', () => {
    input.setAttribute('type', 'password');
});

Просто установите значение по умолчанию на пустое пространство и очистите значение пароля в готовом событии окна

         <input value=" " type="text" name="fakeusernameremembered"/>
<input value=" " type="password" name="fakepasswordremembered"/>

Я наконец-то добился успеха, используя textarea с обработчиком событий, который заменяет каждый символ, набранный на "•".

К сожалению, у меня ничего не получалось (win10, opera/chomium) нет "нового пароля", нет других решений... была также проблема со встроенным стилем, когда он был скрыт этим, автозаполнение прогрессировало

Вот мое рабочее решение: нам нужно два типа = пароль и сначала скрыть по внешнему CSS

<input type="password" class="vapor zero">
<input
    id="hes"
    type="password"
    placeholder="actual password"
    autocomplete="off"
    autocomplete="false"
    autocorrect="off"
    name="password2"
    value=""
    autocomplete="new-password"
    required>

CSS:

.zero{
    width:0px !important;
    height:0px !important;
    padding:0 !important;
    border:1px solid white;
}

jquery killer (точно):

$(".vapor").fadeOut(5400, function() {
    $(this).remove();
});

Вы можете попробовать этот путь.

Отключить автозаполнение Если вы не хотите, чтобы сохраненные личные данные отображались каждый раз при заполнении формы, вы можете отключить автозаполнение.

Откройте Chrome. В правом верхнем углу нажмите More More и затем Настройки.

Внизу нажмите Показать дополнительные настройки.

В разделе "Пароли и формы" снимите флажок "Включить автозаполнение для заполнения веб-форм одним щелчком мыши". Чтобы снова включить автозаполнение, установите флажок еще раз.

Другие вопросы по тегам