0

<textarea col="5" row="5" />などの終了タグを明示的に使用すると、最新のブラウザーでレイアウトが壊れるのはなぜ<textarea col="5" row="5" /></textarea>ですか? これは私を悩ませてきました。それはどういうわけか標準の一部ですか?

4

2 に答える 2

3

はい、それは標準の一部です:

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、属性がないため、初期値はタグ内に入ります。

于 2012-06-20T01:29:31.077 に答える
1

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 を参照してください。

于 2012-06-20T04:08:17.773 に答える