Текущее поведение автозаполнения - беспорядок!
Браузер использует различные методы для определения необходимости автозаполнения поля.
Например, типичное сочетание имени пользователя и пароля, которое браузер будет искать для двух полей, одно из которых является типом электронной почты, а другое - паролем типа.
Они также проверяют атрибут name
и атрибут type
, чтобы попытаться определить, нужно ли заполнять поле автоматически.
Наконец, в зависимости от браузера, они также ищите поля, которые они ожидают увидеть вместе, и используйте связанные метки, чтобы выяснить, какие поля какие (именно поэтому важно правильно связать метки с полями формы!).
Ярким примером этого могут служить кредитные карты, на которых они ожидают увидеть имя владельца карты, номер кредитной карты, срок действия и т. Д. c.
Без по крайней мере 2 из этих элементов автозаполнение не будет работать (опять же, зависит от того, какой браузер вы используете).
Поскольку каждый браузер имеет уникальный способ реализации этой функции, он иногда трудно предотвратить «межсайтовое заражение» результатов.
Домен не рассматривается, как вы уже подозревали.
Однако есть несколько вещей, которые вы можете сделать: -
«Старый» способ (текущий способ)
Придайте вводу необычный атрибут имени (например, name="xA123IIasd"
).
Поскольку это один из основных факторов, определяющих, для чего предназначено поле (с точки зрения браузера), и он никак не влияет на работу пользователя, это отличный вариант.
Он не будет работать с полями имени пользователя и пароля, хотя браузеры оптимизировали его для этого. Это также не гарантирует успеха, но улучшит «межсайтовое загрязнение» для большинства полей.
Вы также можете попробовать присвоить полю немного другую метку, чем стандартная, если это не влияет удобство использования (т. е. «Ваше имя» вместо «Имя»).
Новый (лучший) способ [не поддерживается полностью]
Используйте новые опции автозаполнения, часть последнего «уровня жизни».
Поддержка неясна (то есть не могу найти их на caniuse.com, только «выключен»), но я знаю, что это работает в Google Chrome и Opera, вроде работает в Safari (некоторые элементы поддерживаются, некоторые нет) ), это лучше, чем ничего!
Вот список полных 53 опций , которые вы можете использовать.
Добавляя их к своим входам, вы можете контролировать, какие Браузер будет отображаться как опции для автозаполнения.
Для любого другого браузера выбор за вами, сниффер браузера и отключите автозаполнение или просто оставьте его как «ожидаемое поведение» (даже если это не очень удачный опыт) .
Еще одна интересная функция
Еще одна последняя функция, которую имеет новое автозаполнение, - это «секции».
Это позволяет вам «охватывать» автозаполнение определенным набором. полей.
Например: -
<fieldset>
<legend>Package One Ship To</legend>
<label> Address: <textarea name="pack1Add1" autocomplete="section-packageone shipping street-address"></textarea> </label>
<label> City: <input name="pack1Add2" autocomplete="section-packageone shipping address-level2"> </label>
<label> Post Code: <input name="pack1Postcode" autocomplete="section-packageone shipping postal-code"> </label>
</fieldset>
<fieldset>
<legend>Package Two Ship To:</legend>
<label> Address: <textarea name="pack2Add1" autocomplete="section-packagetwo shipping street-address"></textarea> </label>
<label> City: <input name="pack2Add2" autocomplete="section-packagetwo shipping address-level2"> </label>
<label> Postal Code: <input name="pack2Postcode" autocomplete="section-packagetwo shipping postal-code"> </label>
</fieldset>
Это означает, что вы можете использовать автозаполнение дважды на одной странице, так как каждая группа обрабатывается отдельно от других групп!
Вы также заметите, что я использую «доставку» В случае автозаполнения, чтобы диктовать использование адреса доставки, другой вариант здесь - «выставление счетов» (это только два варианта для типов адресов на момент написания).