Как отключить 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'

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

Ответ 1

Попробуйте 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, чтобы решить эту проблему, надеюсь, что вам это поможет, если не просьба поместить здесь комментарий, удачи:)

Update:

Это зависит от версии 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);
            });

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

Решение 3

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

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

Решение 4

попробуйте autocomplete="false" вместо autocomplete="off" или nofill

Ответ 2

  • Добавьте атрибут autocomplete со значением имени пользователя для имени пользователя.
  • Если вы внедрили "входной поток электронной почты", который разделяет имя пользователя и пароль на две отдельные формы, укажите поле формы, содержащее имя пользователя в форме, используемой для сбора пароля. Вы можете, конечно, скрыть это поле через CSS, если это подходит для вашего макета.
  • Добавьте атрибут autocomplete со значением текущего пароля для поля пароля в форме входа.
  • Добавьте атрибут autocomplete со значением new-password для поля пароля в формах регистрации и изменения пароля.
  • Если вам требуется дважды вводить пароль при регистрации или обновлении пароля, добавьте атрибут автозаполнения нового пароля в оба поля.

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

Ответ 3

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

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

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

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

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

 <input id="email" type="email" name="email" value="[email protected]" disabled>
    <input id="password" type="password" name="password" disabled>

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

Ответ 4

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

Поле пароля:

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

Полный пример: (используя классы Bootstrap 3 и значки шрифта 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>

Ответ 5

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

HTML

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

JS

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

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

Ответ 7

Для меня с 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"}}/>

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

Ответ 8

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

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

autocomplete = "new-password"

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

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

Ответ 9

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

Ответ 10

к сожалению, ничего не работало для меня (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();
});

Ответ 11

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

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

Откройте Chrome. В верхнем правом нажмите "Подробнее", а затем Настройки.

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

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