<textarea col="5" row="5" />
などの終了タグを明示的に使用すると、最新のブラウザーでレイアウトが壊れるのはなぜ<textarea col="5" row="5" /></textarea>
ですか? これは私を悩ませてきました。それはどういうわけか標準の一部ですか?
2 に答える
はい、それは標準の一部です:
http://www.w3.org/TR/html401/interact/forms.html#h-17.7
17.7 The TEXTAREA element
<!ELEMENT TEXTAREA - - (#PCDATA) -- multi-line text field -->
<!ATTLIST TEXTAREA
%attrs; -- %coreattrs, %i18n, %events --
name CDATA #IMPLIED
rows NUMBER #REQUIRED
cols NUMBER #REQUIRED
disabled (disabled) #IMPLIED -- unavailable in this context --
readonly (readonly) #IMPLIED
tabindex NUMBER #IMPLIED -- position in tabbing order --
accesskey %Character; #IMPLIED -- accessibility key character --
onfocus %Script; #IMPLIED -- the element got the focus --
onblur %Script; #IMPLIED -- the element lost the focus --
onselect %Script; #IMPLIED -- some text was selected --
onchange %Script; #IMPLIED -- the element value was changed --
>
開始タグ:必須、終了タグ:必須
なぜそれが壊れるかはまったく別の話ですが、ブラウザはそれを実装して、ただ空textarea
を作成し、壊れないようにすることもできます。ただし、これは標準で要求されているため、従う必要があります。
- 編集 -
また、@ Sethのコメント(ありがとう!)によるとvalue
、属性がないため、初期値はタグ内に入ります。
HTML 4.01 の規則では、 (データ文字を作成する<textarea col="5" row="5" />
) と同等です。ただし、このルールに従うブラウザはありません。バリデータはそうしますが、これを直接見るのは困難です。長い説明: SGML、HTML、XML、および XHTML の空の要素。<textarea col="5" row="5">>
>
ブラウザーが実際に行っていることは、/
as ガベージをスキップすることです。これもまた、開始タグしかないことを意味し、ブラウザは後続の文字を のコンテンツとして処理しようとしますがtextarea
、ある時点でこれを停止する可能性があります。コンテキストによっては、文書のレイアウトが乱れる場合があります。
ただし、ドキュメントが XML メディア タイプ (HTTP ヘッダー) で送信された場合は、XML ルールによって処理され <textarea col="5" row="5" />
、<textarea col="5" row="5"></textarea>
. このような使用法は、インターネットで使用する場合、XHTML では推奨されません。XHTML 1.0 仕様の (悪名高い)付録 Cの節 C.3 を参照してください。