ОБНОВЛЕНИЕ на 2017 год: Похоже, что ответ от Кэти содержит больше актуальной информации, чем мой.Будущие читатели: отдайте свой голос за ее ответ .
Это прекрасный вопрос, к которому на удивление трудно найти документацию.На самом деле, во многих случаях вы обнаружите, что функция автозаполнения Chrome «просто работает».Например, следующий фрагмент html создает форму, которая, по крайней мере для меня (Chrome v. 18), автоматически заполняется после нажатия в первом поле:
<!DOCTYPE html>
<html>
<body>
<form method="post">
First name:<input type="text" name="fname" /><br />
Last name: <input type="text" name="lname" /><br />
E-mail: <input type="text" name="email" /><br />
Phone: <input type="text" name="phone" /><br />
Address: <input type="text" name="address" /><br />
</form>
</body>
</html>
Однако этот ответ неудовлетворителен,как это оставляет решение в сфере "магии".Углубившись вглубь, я узнал, что Chrome (и другие браузеры с автозаполнением) в первую очередь полагаются на контекстные подсказки для определения типа данных, которые должны быть заполнены в элементах формы.Примеры таких контекстных подсказок включают name
элемента ввода, текст, окружающий элемент, и любой текст-заполнитель.
Однако недавно команда Chrome признала, что это неудовлетворительное решение, и ониначал настаивать на стандартизации в этом вопросе. Очень информативный пост от группы веб-мастеров Google недавно обсуждал эту проблему, объясняя:
К сожалению, до сих пор веб-мастерам было трудно обеспечить, чтобы Chrome и другие формыЗаполняющие провайдеры могут правильно проанализировать свою форму.Существуют некоторые стандарты;но они накладывают тяжелое бремя на реализацию веб-сайта, поэтому они практически не используются на практике.
(«Стандарты», на которые они ссылаются, это более поздняя версия спецификации упомянуто в ответе Avalanchis выше.)
Пост Google продолжает описывать предложенное ими решение (что встречается серьезной критикой в комментариях к посту).Они предлагают использовать для этой цели новый атрибут:
Просто добавьте атрибут к элементу ввода, например поле адреса электронной почты может выглядеть следующим образом:
<input type=”text” name=”field1” x-autocompletetype=”email” />
... где x-
означает «экспериментальный» и будет удален, если и когда это станет стандартом.Прочитайте пост для получения более подробной информации, или, если вы хотите копать глубже, вы найдете более полное объяснение предложения на вики-сайте Whatwg .
ОБНОВЛЕНИЕ: Как указано в этих проницательных ответах , все регулярные выражения, используемые Chrome для идентификации / распознавания общих полей, можно найти в autofill_regex_constants.cc.utf8
.Поэтому, чтобы ответить на исходный вопрос, просто убедитесь, что имена ваших HTML-полей соответствуют этим выражениям.Вот некоторые примеры:
- имя:
"first.*name|initials|fname|first$"
- фамилия:
"last.*name|lname|surname|last$|secondname|family.*name"
- электронная почта:
"e.?mail"
- адрес (строка 1):
"address.*line|address1|addr1|street"
- почтовый индекс:
"zip|postal|post.*code|pcode|^1z$"