[11] [[HTML]] の[[フォーム制御子]]の
[DFN[[CODE(HTMLa)@en[autocomplete]] [[属性]]]]は、
[[自動補完]]を有効とするべきかどうかを指定します。
[13]
:状態:[[WHATWG]] [[勧告案]] ([[WD]]~[[LC]])
:[[要素]]:[CODE(HTMLe)@en[[[form]]]]、[CODE(HTMLe)@en[[[input]]]]
:[CODE(HTMLa)@en[[[type]]]]:[CODE(HTML)@en[[[text]]]],
[CODE(HTML)@en[[[password]]]],
[CODE(HTML)@en[[[date]]]], [CODE(HTML)@en[[[datetime]]]],
[CODE(HTML)@en[[[datetime-local]]]], [CODE(HTML)@en[[[month]]]],
[CODE(HTML)@en[[[week]]]], [CODE(HTML)@en[[[time]]]],
[CODE(HTML)@en[[[email]]]], [CODE(HTML)@en[[[url]]]],
[CODE(HTML)@en[[[number]]]], [CODE(HTML)@en[[[range]]]],
[CODE(HTMLe)@en[[[search]]]],
[CODE(HTMLe)@en[[[color]]]],
[CODE(HTMLe)@en[[[tel]]]]
:[[属性名]]:[CODE(HTMLa)@en[[[autocomplete]]]]
([Q@en[[[auto complete]]]] ([Q[[[]自動補完]]]) より)
:[[属性値]]:[[列挙型]] (>>14)
:[[既定値]]:[CODE(HTML)@en[[[on]]]] (>>15)
* 仕様書
-[54] [CITE@en-US-x-hixie[HTML 5]]
-- [CODE(HTMLe)@en[[[form]]]]
-- [CODE(HTMLe)@en[[[input]]]]
* 属性値
[14]
指定可能な[[属性値]]:
- [15] [CODE(HTML)@en[[[on]]]] ([[既定値]]):
[[フォーム制御子]]の入力データは特に注意を要するほどではなく、
以前入力した値を[[利用者エージェント]]が覚えていてくれることを[[利用者]]が期待してもよい性質のものであることを示します。
[SRC@en[WF2 2.9]]
- [16] [CODE(HTML)@en[[[off]]]]
[[フォーム制御子]]の入力データが特に注意を要するものである
(例: [[核兵器]]の[[合言葉]]。) か、
決して再利用されることのないものである
(例: [[銀行口座]]の[[一時合言葉]]。) ことから、
[[利用者エージェント]]が候補値を提示できるようにせずに、
[[利用者]]が毎回入力するべきであることを示します。
[SRC@en[WF2 2.9]]
[17]
[CODE(HTMLa)@en[[[autocomplete]]]] [[属性値]]が
[CODE(HTML)@en[[[off]]]] の場合、
[[利用者エージェント]]は、
その[[欄]]の[[値]]を記憶[['''するべきではありません''']]。
[SRC@en[WF2 2.9]]
[18]
>>17 以外の場合、[[利用者エージェント]]は、
[[利用者]]がその[[欄]]に入力した[[値]]を記憶し、
以後[[利用者]]がその[[頁]]に戻った時に[[利用者エージェント]]が[[フォーム]]を予め埋めてられるように[['''して構いません''']]。
[SRC@en[WF2 2.9]]
[3] [[WinIE 6]] で試してみましたが、
[[値]]の[[大文字]]・[[小文字]]は区別しませんでした。
[27]
[[WinIE 6]] では、
[CODE(HTML)[form/@autocomplete='off']] のときは、
[CODE(HTML)[input/@autocomplete]] の指定は無視されます。
そうでないときは無視されません。
** レンダリング
[19]
[[Web Forms 2.0]] は、[[自動補完]]の機構を具体的には定義していません。
[[利用者エージェント]]は、仕様書に違反しない範囲内で、
[[安全性]]や[[個人情報保護]]を考慮した上で自由に[[自動補完]]機構を実装[['''して構いません''']]。
[SRC@en[WF2 2.9]]
[21]
[[利用者エージェント]]は、
[[利用者]]がこの[[属性]]への対応を無効化できるように[['''して構いません''']]。
この[[属性]]への対応は既定状態で有効に[['''するべきです''']]。
無効化すると[[安全性]]の問題が生じる虞があるので、
[[利用者]]が簡単に無効化できるように[['''するべきではありません''']]。
[SRC@en[WF2 2.9]]
[8] [[Mozilla]] では [CODE(HTMLa)@en[[[autocomplete]]]]
[[属性]]つきの [CODE(HTMLe)@en[[[input]]]]
[[要素]]は赤枠で表示されます。
** 安全性
[9] [[自動補完]]のための記録を取っておくと、
その記録の保管場所や保管方法 [WEAK[([[ファイル]]の[[アクセス権]]など)]]
によっては第3者に見られてしまうことがあります。また、
実際の[[フォーム]]入力時に候補を[[画面]]の後ろから覗き込まれたり、
他人に使わせた時に見られてしまったりすることもあります。
[[会員番号]]や[[クレジット・カード]]の番号などが漏れてしまうと危険ですし、
そうでなくても本人の知られたくない個人的な情報を知られてしまう危険性があります。
[[利用者エージェント]]は:
- 完全に[[自動補完]]を無効にできるべきです。
- [[自動補完]]が有効かどうか簡単に確認できるべきです。
- 記録の保管方法について、その環境に合わせた安全な方法を採用するべきです。
- 記録の一部又は全部を手動で消去できるべきです。
- [[窓]]を閉じた時や他の[[サイト]]に移動した時など、
適当な時期に自動的に記録を消去する機能があると便利です。
- [[サイト]] ([[ドメイン]]や [CODE(ABNF)@en[[[path]]]])
によって記録するかしないか選択できる機能があると便利です。
- 共用の[[計算機]]での利用を想定するなら、
[[自動補完]]を使用するかの設定 [WEAK[(を含む各種の設定)]]
に[[管理者]]権限を要求
[WEAK[(例えば[[合言葉]]を要求)]] できるようにするべきです。
- 個々の[[フォーム]]や入力欄ごとに記録を消去する機能があると便利です。
[[管理者]]は:
- 共用の[[計算機]]では[[自動補完]]を無効にしておくべきです。
- 共用の[[計算機]]では[[自動補完]]を使用するかの設定
[WEAK[(を含む各種の設定)]] を一般の[[利用者]]が行えなくするべきです。
[[利用者]]は:
- [[自動補完]]が有効かどうかに注意するべきです。
- 共用の[[計算機]]で[[自動補完]]が有効になっていた場合、
使用後に必ず記録を消去するべきです。
* 歴史
** 誕生
@@ ・・・
** Web Forms 2.0 による標準化
-[12] [[Web Forms 2.0]]
-- [CSECTION@en[2.9. The [CODE(HTMLa)@en[[[autocomplete]]]] attribute]]
[23]
[[銀行]]業界では、 [[Webサイト]]の入力欄で[[自動補完]]を無効化できることを非常に強く望んでおり、
それを受けて多くの[[利用者エージェント]]が
[CODE(HTMLa)@en[[[autocomplete]]]]
[[属性]]を[[実装]]していました。
[SRC@en[WF2 2.9]]
[22]
[[W3C]] はこの状況を無視してきましたが、
[[Web Forms 2.0]] は当初から
[CODE(HTMLa)@en[[[autocomplete]]]]
[[属性]]を提案の中に含めていました。
** [CODE(HTMLe)@en[form]] [CODE(HTMLa)@en[autocomplete]]
[53] 元々 [[HTML5]] への [[WF2]] の併合後、[[IE]] は [CODE(HTMLe)@en[[[form]]]] [[要素]]にも [CODE(HTMLa)@en[[[autocomplete]]]] [[属性]]を持っており、
それへの対応が必要であろうと仕様書の[[注釈]]に記されていました。
[51] ですが、実際利用率は高くなく、一旦は不必要と判断されました。
;; [CITE@en[(X)HTML5 Tracking]] ([TIME[2008-12-24 22:46:29 +09:00]] 版)
>give up on