[1] [[HTML]] の [CODE(HTMLe)[[[input]]]] 要素は、 [CODE(HTMLa)[[[type]]]]
属性が [DFN[[CODE(HTML)[hidden]]]] の時、 [DFN[隠れ制御子]]となります。
[2] 仕様書:
- [[HTML 4]] ([[Web Forms 1.0]])
-- hidden control
-- 17.4 The [CODE(HTMLe)[INPUT]] element
- [[Web Forms 2.0]]
-- [CSECTION@en[2.3. Changes to existing controls]]
[3] 属性:
,属性名 ,属性値 ,既定値 ,説明 ,出典
,[CODE(HTMLa)[[[class]]]] , , ,[[級]] ,[HTML 4] %[[coreattrs]]
,[CODE(HTMLa)[[[datafld]]]] , , ,データ欄 ,[HTML 4] 予約
,[CODE(HTMLa)[[[dataformatas]]]] , , ,データ書式 ,[HTML 4] 予約
,[CODE(HTMLa)[[[datasrc]]]] ,[CODE(SGML)[%[[URI]]]] ,(なし) ,データ源 ,[HTML 4] 予約
,[CODE(HTMLa)[[[dir]]]] , , ,[[書字方向]] ,[HTML 4] %[[i18n]]
,[CODE(HTMLa)[[[disabled]]]] ,(真偽値属性) ,(偽) ,無効 ,[HTML 4]
,[CODE(HTMLa)[[[id]]]] , , ,一意識別子 ,[HTML 4] %coreattrs
,[CODE(HTMLa)[[[lang]]]] , , ,[[自然言語]] ,[HTML 4] %i18n
,[CODE(HTMLa)[[[xml]]:lang]] , , ,自然言語 ,[XHTML 1]
,[CODE(HTMLa)[[[language]]]] , , ,スクリプト言語 ,[[WinIE 4]]+
,[CODE(HTMLa)[[[name]]]] , , ,制御子名 ,[HTML 4]
,[CODE(HTMLa)[[[onblur]]]] ,[CODE(SGML)[%[[Script]]]] , ,焦点を失した時 ,[HTML 4]
,[CODE(HTMLa)[[[onchange]]]] ,[CODE(SGML)[%[[Script]]]] , ,現在値変更時 ,[HTML 4]
,[CODE(HTMLa)[[[onclick]]]] , , , ,[HTML 4] %[[events]]
,[CODE(HTMLa)[[[ondblclick]]]] , , , ,[HTML 4] %events
,[CODE(HTMLa)[[[onfocus]]]] ,[CODE(SGML)[%[[Script]]]] , ,焦点を得た時 ,[HTML 4]
,[CODE(HTMLa)[[[onkeydown]]]] , , , ,[HTML 4] %events
,[CODE(HTMLa)[[[onkeypress]]]] , , , ,[HTML 4] %events
,[CODE(HTMLa)[[[onkeyup]]]] , , , ,[HTML 4] %events
,[CODE(HTMLa)[[[onmousedown]]]] , , , ,[HTML 4] %events
,[CODE(HTMLa)[[[onmousemove]]]] , , , ,[HTML 4] %events
,[CODE(HTMLa)[[[onmouseout]]]] , , , ,[HTML 4] %events
,[CODE(HTMLa)[[[onmouseover]]]] , , , ,[HTML 4] %events
,[CODE(HTMLa)[[[onmouseup]]]] , , , ,[HTML 4] %events
,[CODE(HTMLa)[[[style]]]] , , ,スタイル情報 ,[HTML 4] %coreattrs
,[CODE(HTMLa)[[[title]]]] , , ,注釈的題 ,[HTML 4] %coreattrs
,[CODE(HTMLa)[[[type]]]] ,'''hidden''' ,[CODE(HTML)[[[text]]]] ,制御子の種類 ,[HTML 4]
,[CODE(HTMLa)[[[value]]]] , , ,初期値 ,[HTML 4]
[[#comment]]
* 文脈
[8]
[[Web Forms 2.0]] では、
[[ブロック水準要素]]が認められる場所でも、
[[行内水準内容]]が認められる場所でも、
どちらにも置くことができます。
[SRC@en[WF2 2.3]]
[[#comment]]
* UA による利用
[4] 隠れ制御子は[[レンダリング]]しませんが、
フォームを[[提出]]するときには含まれます。
[9]
あああ
([[あああ]] [あああ] [WEAK[2007-03-15 02:15:49 +00:00]])
[[#comment]]
* 安全性
[7] 隠し制御子を使うと、利用者が気付かないようにデータを送信させることができます。
基本的には鯖から送られたデータを送り返すだけですから、
普通は問題になりません。しかし、
他のものの組合せ方次第で危険なことも実現できてしまう虞があります。
例えば、スクリプトを使うと隠し制御子の[[現在値]]を変更できるかもしれません。
もしその UA でスクリプトからの access の制御が正しく行われていないと、
重要な情報を利用者に確認せずに送信させてしまうかもしれません。
また、以前に利用者が入力した個人情報などを鯖が隠し制御子として送り返し、
他の鯖に (そうと気付かせずに) 再送信させるかもしれません。
利用者や UA の設計者は十分な注意が必要でしょう。
[[#comment]]
* メモ
[5] [[HTTP]] のような状態を持たないプロトコルで、
状態を保持するための手段として隠れ制御子は有用です。
(なお、状態を保持するための手段としては他に [[Cookie]]
や鯖側で[[セッション]]管理を行う方法などがあり、
状態の重要度・機密度や利用する環境などによって適宜使い分けられています。)
[6] フォームで提出する [[charset]] を明示する方法の一種として、
隠れ制御子を使った [[_charset_]] hack と呼ばれる方法が多くの [[UA]]
や[[フォーム処理エージェント]]で実装されています。
[10] [CITE[About ]] ([[Ian Hickson ]] 著, [TIME[2008-11-12 01:11:19 +09:00]] 版)
[11] [CITE[IRC logs: freenode / #whatwg / 20100106]]
([TIME[2010-01-07 23:50:02 +09:00]] 版)
[12] [CITE@en-us[hidden Property (EMBED, HTMLEmbedElement Constructor)]]
([TIME[2010-03-14 22:58:23 +09:00]] 版)
[13] [CITE@en[Safari Dev Center: Safari HTML Reference: Supported Attributes]]
([TIME[2010-03-20 17:49:52 +09:00]] 版)
[14] [CITE@en[Web Applications 1.0 r6895 Tweak hidden='''s definition a bit to be more consistent with likely usage scenarios.]]
( ([TIME[2012-01-14 07:11:00 +09:00]] 版))
[15] [CITE@en[Web Applications 1.0 r7284 Ignore hidden='' elements in outlines.]]
( ([TIME[2012-08-28 05:04:00 +09:00]] 版))
[16] [CITE[IRC logs: freenode / #whatwg / 20121006]]
( ([TIME[2012-10-11 21:31:55 +09:00]] 版))
[17] [CITE@en[Web Applications 1.0 r7453 Improve compatibility for