2012-06-20 39 views
0

<textarea col="5" row="5" />爲什麼<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不要中斷。但是,由於這是標準要求的,你應該遵循它。

- 編輯 - (!謝謝)

而且按照@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>。在Internet上使用XHTML時不建議使用此類用法;參見XHTML 1.0規範的(着名)appendix C的條款C.3。

相關問題