AKTUALIZACJA na rok 2017: Wygląda na to, że odpowiedź Katie zawiera więcej aktualnych informacji niż moja. Przyszli czytelnicy: oddaj głos na jej odpowiedź .
To świetne pytanie, dla którego dokumentacja jest zaskakująco trudna do zdobycia. W rzeczywistości w wielu przypadkach okaże się, że funkcja autouzupełniania Chrome „po prostu działa”. Na przykład następujący fragment kodu HTML tworzy formularz, który przynajmniej dla mnie (Chrome w. 18) jest automatycznie wypełniany po kliknięciu pierwszego pola:
<!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>
Jednak ta odpowiedź jest niezadowalająca, ponieważ pozostawia rozwiązanie w dziedzinie „magii”. Głębsze kopanie Dowiedziałem się, że Chrome (i inne przeglądarki z włączonym autouzupełnianiem) polegają przede wszystkim na wskazówkach kontekstowych w celu określenia rodzaju danych, które należy wypełnić w elementach formularza. Przykłady takich wskazówek kontekstowych obejmują name
element wejściowy, tekst otaczający element i dowolny tekst zastępczy.
Jednak ostatnio zespół Chrome przyznał, że jest to niezadowalające rozwiązanie, i zaczęli nalegać na standaryzację w tej sprawie. Bardzo pouczający post z grupy Google Webmasters ostatnio omawiał ten problem, wyjaśniając:
Niestety do tej pory webmasterzy mieli trudności z zapewnieniem, że Chrome i inni dostawcy wypełniania formularzy mogą poprawnie parsować swoje formularze. Istnieją pewne standardy; ale nakładają ciężkie obciążenia na wdrożenie strony internetowej, więc nie są one często stosowane w praktyce.
(„Standardy”, do których się odnoszą, to najnowsza wersja specyfikacji wymienionej w odpowiedzi Avalanchisa powyżej).
W dalszej części posta Google opisano ich proponowane rozwiązanie (co spotkało się z poważną krytyką w komentarzach do postu). Proponują użycie nowego atrybutu do tego celu:
Wystarczy dodać atrybut do elementu wejściowego, na przykład pole adresu e-mail może wyglądać następująco:
<input type=”text” name=”field1” x-autocompletetype=”email” />
...gdzie x-
oznacza „eksperymentalny” i zostanie usunięty, jeśli i kiedy stanie się standardem. Przeczytaj post, aby uzyskać więcej informacji, lub jeśli chcesz kopać głębiej, znajdziesz pełniejsze wyjaśnienie propozycji na wiki whatwg .
AKTUALIZACJA:
Jak wskazano w tych wnikliwych odpowiedziach , wszystkie wyrażenia regularne używane przez Chrome do identyfikowania / rozpoznawania wspólnych pól można znaleźć autofill_regex_constants.cc.utf8
. Aby odpowiedzieć na pierwotne pytanie, upewnij się, że nazwy pól HTML są zgodne z tymi wyrażeniami. Niektóre przykłady obejmują:
- Imię:
"first.*name|initials|fname|first$"
- nazwisko:
"last.*name|lname|surname|last$|secondname|family.*name"
- e-mail:
"e.?mail"
- adres (wiersz 1):
"address.*line|address1|addr1|street"
- kod pocztowy:
"zip|postal|post.*code|pcode|^1z$"