Отключить автозаполнение Chrome для имени пользователя и пароля не работает для более новых версий - PullRequest
0 голосов
/ 29 января 2019

Мой проект находится в ReactJS и Redux, и я использую избыточную форму для своих форм.У меня есть две формы (обе имеют поля ввода текста и поля ввода пароля) на странице моего веб-сайта.Теперь chrome показывает список автозаполнения для одной формы в другой, и он не работает должным образом, из-за чего увеличился показатель отказов на моем веб-сайте.

Я хотел бы отключить выпадающий список автозаполнения и автозаполнения, но не получил никакого решения для этого.Моя версия Chrome - версия 71.0.3578.98.

Я пробовал следующие вещи (как прочитано по другим ссылкам переполнения стека);но ни один из них не работает.

Единственное, что, по-видимому, работает правильно, это сделать поля доступными только для чтения и удалить только для чтения, когда пользователь начинает вводить (событие onKeyDown).Затем, если пользователь нажимает клавишу Backspace и ввод пуст, команда make снова становится доступной только для чтения, в противном случае снова появляется раскрывающийся список автозаполнения. Это решение скорее хак, и я хотел бы узнать какое-либо лучшее решение для этого.

PS: Это дублирующий вопрос, но у меня нет соответствующего решения, которое бы работало в новой версии Chrome. Ссылки, по которым я следовал: Отключение Chrome Autofill , Chrome игнорирует автозаполнение = "выкл" , Как отключить Chrome для автозаполнения имени пользователя / пароля электронной почты? , Отключить автозаполнение / автозаполнение / предложение Google Chrome и многое другое.

Ответы [ 4 ]

0 голосов
/ 10 июля 2019

Я нашел способ, которым можно заставить работать решение для скрытого ввода.Я использовал его в своем проекте, чтобы отключить автозаполнение Chrome моего имени пользователя.

<!-- add a dummy input element and make sure chrome will auto-populate your username(or address etc) to it -->
<input type="text" style="pointer-events: none; opacity: 0; position: absolute">
pointer-events: none;  => make it not the target of pointer events
opacity: 0;   => make it disappear
position: absolute;   => don't let it break your dom structure

Прекрасно работает в Chrome 75.0.3770.100.

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

0 голосов
/ 14 февраля 2019

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

<!-- 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"/>

Хаки, я знаю, но я даже попробовал точный пример, приведенный в ответной команде Chrome , которую упомянул Coderer:

Например, если у вас есть поле ввода адреса вваш инструмент CRM, в котором вы не хотите, чтобы Chrome выполнял автозаполнение, вы можете придать ему семантическое значение, которое имеет смысл относительно того, о чем вы просите: например, autocomplete = "new-user-street-address".Если Chrome обнаружит это, он не будет пытаться автоматически заполнить поле.

... но это не сработает (хотя посту уже много лет).

0 голосов
/ 19 июня 2019

Мне удалось отключить функцию автозаполнения Chrome, создав скрытый ввод непосредственно перед моим вводом и добавив случайное число для исходного имени ввода:

<input type="text" name="address" value="" readOnly={true} style={{display: "none"}}/>
<input
  ref={inputRef}
  className="form-control"
  type="text"
  name={"address " + Math.random()}    <--- add random number to prevent Chrome autofill
  required
  placeholder="New York"
  value={location.address}
  onChange={handleInputChange}
/>
0 голосов
/ 14 февраля 2019

Вы попробовали совет от этого официального ответа команды Chrome ?

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

На самом деле это не сработает, если у вас нет действительного атрибута name.Итак, вы пробовали что-то вроде <input type="text" name="fieldX" autocomplete="my-site-field-x">?Значения, используемые для name и autocomplete, могут иметь значение, так как я слышал, что некоторые люди предполагают, что Chrome иногда делает нечеткое сопоставление с распознанными значениями из спецификации (например, address, telephone, email,так далее).

...