2012-06-20 2 views
0

Зачем было <textarea col="5" row="5" /> сломать мой макет в моем современном браузере, но нет, если я явно использую закрывающий тег, такой как <textarea col="5" row="5" /></textarea>? Это беспокоило меня. Является ли это частью стандарта каким-то образом?Почему <textarea cols = "5" rows = "5" /> сломать мой макет, но нет, если я закрою</textarea>?

+0

Возможно, это сработает, если вы подали свою страницу как XML. HTML не имеет самозакрывающихся тегов. – bfavaretto

+1

См. Также этот ответ: http://stackoverflow.com/a/70288/27862 – user123444555621

ответ

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 a и не ломаться. Но поскольку это требуется стандартом, вы должны просто следовать ему.

- EDIT - (спасибо!)

Также согласно @Seth комментарий, он не имеет value атрибут, поэтому начальные значения идут внутри тегов.

+0

Кроме того, очевидно, что вы собираетесь использовать конечный тег, потому что нет атрибута 'value', таким образом, любые начальные значения, которые вы хотите поместить внутри текстовой области больше некуда идти, кроме как между тегом открытия и закрытия. –

1

По правилам HTML 4.01, <textarea col="5" row="5" /> эквивалентен <textarea col="5" row="5">> (что делает символ данных >). Тем не менее, браузер не следует этому правилу. Валидаторы делают это, но это трудно увидеть напрямую. Длительное объяснение: Empty elements in SGML, HTML, XML, and XHTML.

Какие браузеры делают на практике то, что они просто пропускают / как мусор. Это также означает, что у вас есть только начальный тег, и затем браузер пытается обработать последующие символы как содержимое textarea, хотя в какой-то момент это может остановиться. В зависимости от контекста макет документа может быть испорчен.

Однако, если документ отправлен с типом мультимедиа XML (в заголовках HTTP), он будет обработан правилами XML, а затем <textarea col="5" row="5" /> эквивалентен <textarea col="5" row="5"></textarea>. Такое использование не рекомендуется в XHTML при использовании в Интернете; см. пункт C.3 (in) известного appendix C спецификации XHTML 1.0.

Смежные вопросы