2011-11-08 73 views
5

我的問題很簡單:HTML屬性中的換行符和特殊字符

以下內容有效嗎?即使是這樣,它會在某些瀏覽器中崩潰嗎?

<div data-text="Blah blah blah 
More blah 
And just a little extra blah to finish"> ... </div> 

哪些字符 「必須」 在屬性值編碼?我知道"應該是&quot;,但還有其他需要編碼的東西嗎?

+0

HTML4如何?規則不一樣嗎? –

回答

5

以下是否有效?

這是HTML5的有效片段,是的。

它會在某些瀏覽器中崩潰嗎?

不太可能。

哪些字符必須在屬性值中編碼?我知道"應該是&quot;,但還有其他需要編碼的東西嗎?

這取決於屬性值是雙引號,單引號還是不帶引號。

對於雙引號形式"必須替換爲其字符引用,而&可能需要替換爲其字符引用,具體取決於後面的字符。請參見attribute-value-double-quoted-state

對於單引號格式'必須替換爲其字符引用,而&可能需要替換爲其字符引用,具體取決於後面的字符。見attribute-value-single-quoted-state

對於不帶引號的形式TABLINEFEEDFORMFEEDSPACE>必須由字符引用來代替,並且&可能需要通過它的字符引用取決於它後面的字符替換。請參閱attribute-value-unquoted-state

+0

還有更多的字符必須作爲[未加引號的屬性值](http://mathiasbynens.be/notes/unquoted-attribute-values)的一部分進行編碼。例如,該字符應該被編碼,否則它將是無效的HTML5。這是因爲可以使用'''字符來突破舊IE版本中未加引號的屬性值。這裏有一個工具可以告訴你一個給定的屬性值是否可以不加引號使用:http://mothereff.in/unquoted-attributes#foo%60bar –

+0

至於何時需要編碼'&',請參閱http:/ /mathiasbynens.be/notes/ambiguous-ampersands。 –

1

HTML 5 spec

有不同的屬性,不同的要求,所以沒有一個答案。 例如,標題屬性允許換行,但類屬性是空格分隔的字符串標記行。

對於數據元素雖然該規範名稱空間的表示:

包含U + 0041到U + 005A(LATIN CAPITAL LETTER A到LATIN CAPITAL LETTER Z)範圍內的任何字符。

除此之外,它沒有任何區別。