Как отключить Chrome автозаполнение (после 2020 года) - PullRequest
0 голосов
/ 15 марта 2020

Я сталкивался с этой проблемой пару раз за последнее время, где Chrome игнорирует autocomplete="false" и autocomplete="off". Теперь он будет даже игнорировать autocomplete="whatever" или все, что вы делаете, чтобы обмануть его, если кто-то ранее отправил форму с этим случайным «взломом».

Пытаясь решить эту проблему, я наткнулся на этот вопрос StackOverflow , который не решает проблему, если вы ранее отправили форму, содержащую это поле.

РЕДАКТИРОВАТЬ: это НЕ для полей пароля.

Да, я отвечаю на свой вопрос здесь, потому что я думаю, что мое решение поможет другим, кто разделяет мою проблему. Ответ ниже:

Ответы [ 2 ]

0 голосов
/ 15 апреля 2020

вот JS решение, которое работает для меня на данный момент:

<input name="name" type="text"
        onfocus="this.__name = this.getAttribute('name'); this.removeAttribute('name')"
        onblur="this.setAttribute('name',this.__name)"
        >
0 голосов
/ 15 марта 2020

ответ? Динамически изменяйте значения name и autocomplete при загрузке страницы. Вы можете сделать это через PHP, JS, что бы вы ни использовали. В моем случае я сделал это в PHP, добавив отметку времени (в секундах) к значениям name и autocomplete:

<input type="text" id="example" name="whatever<?php echo time(); ?>" autocomplete="whatever<?php echo time(); ?>">

, которая становится:

<input type="text" id="example" name="whatever1525376494" autocomplete="whatever1525376494">

Это будет гарантировать, что Chrome не будет автоматически выдаваться при каждой новой загрузке страницы.

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

Чтобы решить эту проблему, я добавил этот бит JS, чтобы обойти это. Он добавляет добавочное целое число к концу этих значений каждые 2,5 секунды, что покрывает его.

if ($('#example').length) {
  var dynamicName = $('#example').attr('name');
  var dynamicCounter = 0;
  setInterval(function(){
    var dynamicVal = dynamicName + dynamicCounter;
    $('#example').attr('autocomplete', dynamicVal).attr('name', dynamicVal);
    dynamicCounter += 1;
  }, 2500);
}

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...