Google Chrome: отключить меню автозаполнения для управления адресами

По состоянию на 9 декабря 2019 г. для Chrome v78.x

У меня возникли серьезные проблемы с отключением меню автозавершения в некоторых местах моего внешнего веб-приложения. Особенно в браузере Chrome, даже после того, как я применил autocomplete="off" к текстовым вводам, связанным с физическими адресами пользователя, он все еще беспокоил меня новым типом меню автозаполнения с опцией «Управление адресами» внизу.

Вот кое-что очевидное: Google Chrome автоматически присваивает такое меню текстовым вводам, которые имеют заполнители, такие как улица и ZIP-адрес назначения.

Список автозаполнения Chrome для управления адресами

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

Клиент дал понять, что никаких меню автодополнения быть не должно. Но мы не можем отображать входные данные, связанные с адресом, без использования слов, связанных с адресом.

Каким будет решение этого?


person Filip Veličković    schedule 09.12.2019    source источник
comment
Еще больше расстраивает, когда вы добавили автоподсказку к вводу адреса, а Chrome показывает подсказку адреса вместо окна автоподсказки. ????   -  person OMi Shah    schedule 16.12.2019


Ответы (2)


Итак, вот что я сделал после нескольких часов исследований. Он достаточно хорошо работает и прост в реализации.

  • Убедитесь, что name и id элемента ввода не содержат терминов, связанных с адресом. Такие атрибуты, как id="input-street" и name="destination-zip", недопустимы.

  • Это самая важная часть: для элемента ввода или любого из его смежных элементов, где вам необходимо поместить любые удобочитаемые термины адреса, вставьте невидимый соединитель нулевой ширины (&zwnj;)< /strong> между буквами указанного термина.

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

Некоторые рабочие примеры:

<input id="input-stret" placeholder="S&zwnj;treet" autocomplete="off">

<form action="/action_page.php">
  <label for="product-addres">Product A&zwnj;ddress</label>
  <input name="addres" id="product-addres" autocomplete="off">
</form>

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

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

person Filip Veličković    schedule 09.12.2019
comment
Я просто потратил несколько часов, пытаясь понять это. К сожалению, ваше решение не работает для атрибута заполнителя. Мне буквально пришлось заменить слово «город» на название городской местности, чтобы Google Chrome не пытался выполнить автозаполнение. - person Jamgold; 15.12.2019
comment
@Jamgold Я был бы очень удивлен, если бы это не сработало, потому что с моей стороны это сработало как волшебство. Не могли бы вы уточнить и описать, как это не сработало? Он по-прежнему отображал меню, несмотря на изменение, или это сломало ваш заполнитель? - person Filip Veličković; 16.12.2019
comment
Мне пришлось сделать некоторые замены в тексте-заполнителе. Нулевой символ отображался как символ замены в Chrome 79. Мне пришлось использовать столяр нулевой ширины, чтобы остановить автозаполнение без добавления символа замены. - person jblopez; 09.01.2020
comment
@jblopez Это хорошее предложение. По-видимому, нулевой символ сработал с моей стороны, и я предполагаю, что это как-то связано с различными атрибутами content-type/charset index.html, которые мы используем. Я отражу ваше понимание в моем ответе. - person Filip Veličković; 10.01.2020

Чистым решением является использование свойства autocomplete в полях ввода для чего-либо, кроме on или off (они зарезервированы и фактически не отключат его). Подробнее о решении можно прочитать здесь

person camiblanch    schedule 06.01.2020
comment
У меня это сработало нормально - установка автозаполнения = нет, не знаю, почему за это проголосовали - person 8a9; 02.12.2020
comment
@ 8a9, потому что браузер игнорирует свойство автозаполнения при определении адреса или телефонного ввода. - person Hiago Souza; 02.06.2021