パスワード入力時の補完をブラウザにさせつつ、1Passwordなどのパスワードマネージャーにも対応させたい
経緯
ウェブブラウザでのログイン実装の際に、Chromeや外部パスワードマネージャーの入力補助を受け、補完を行わせたい場合があったため、それを満たすための実装を行なっています。
TL:DR;
htmlのautocomplete
属性を使います。(1passwordの場合ですが、)Chrome上でパスワードマネージャーの支援を受けつつ、メールアドレスの自動補完を行いたい場合は入力されうる値がメールアドレスのみであっても、 autocomplete="username"
をinputに指定することで補完が行われます。
便利なautocomplete属性
input
やtextarea
といった入力が必要な要素、またform
要素に対しても指定できるブラウザに対して入力補完を行うかどうかを指定できる属性です。
基本的には、autocomplete="on"
をform
またはinput
に対して指定することで機能しますが、input
やtextarea
などの要素に対して機能されない場合があるため以下の条件を守る必要があります。[1]
- name や id 属性を持つこと
-
form
要素の子孫であること - フォームが
submit
ボタンを持つこと(button type="submit"など)
指定可能な値の例
全て文字列での指定になりますが、基本的にはon
かoff
の2択です。
特にform
に対してautocomplete="on"
を指定すると、その子となるinput
やtextarea
もその恩恵を受けます。
on
より詳細な指定としてメールアドレスであることを明示するemail
や、名前であることを明示するname
などがあります。また、名前に関してもname
以上に詳細な区分としてファーストネーム(名)を指定するgiven-name
やファミリーネーム(姓)を指定するfamily-name
などが存在しています。
詳細はmdn公式の解説ページを見るのが良いでしょう。
他にも利用可能なケース
mdn公式のページにも書いてありますが、autocomplete属性では、住所入力やクレジットカードの入力の補助も可能です。 普段私たちが目にしている入力フォームの補完はこれによって機能していたんですね。
ログイン時の入力補完支援を受けたい
今までの説明通り、基本的にはメール入力のinput
に対してautocomplete="email"
,パスワード入力のinput
に対してautocomplete="password"
を指定すれば大丈夫です。
ただし、外部のパスワードマネージャー、特に1Passwordの場合は autocomplete="email"
のみでは入力支援を受けられない場合があります。
そういった場合は、 autocomplete="username"
を利用することで対応が可能です。 usernameの場合でも、Chromeからの支援を受けることはできます。
最後に
個人的な備忘録としつつ、HTML属性が私たちが普段扱っているウェブ体験の向上に寄与しているということに対して感謝しながら記事を終えたいと思います。
Discussion