2015-10-11 69 views

回答

3

definition of the data-* attribute在W3C HTML5建議:

  • 在HTML5中,名稱必須是XML兼容(連帶ASCII-小寫自動)。

  • 在XHTML5中,名稱必須是與XML兼容的並且不能包含大寫的ASCII字母。

definition of XML-compatible說,它

  • 不得包含:字符
  • 必須Name生產在XML 1.0規範

Name production列出了哪些字符匹配允許。


TL;博士:對於data-之後的部分,你可以使用下列字符:

  • 0 - 9
  • a - z
  • A - Z(不XHTML5)
  • -_.·
  • 和字符從這些Unicode範圍:

    • [#x0300-#x036F](Combining Diacritical Marks
    • [#x203F-#x2040](
    • [# xC0-#XD6]
    • [#xD8-#XF6]
    • [#xF8-#x2FF]
    • [#x370-#x37D]
    • [#x37F-#x1FFF]
    • [#x200C-#x200D](ZERO WIDTH NON-JOINER,ZERO WIDTH JOINER)
    • [#x2070-#x218F]
    • [#x2C00-#x2FEF]
    • [#x3001-#xD7FF]
    • [#xF900-#xFDCF]
    • [#xFDF0-#xFFFD]
    • [#x10000-#xEFFFF]

因此@(U + 0040)是不允許的。

2

請參考HTML5規格的Before attribute name state部分:

  • U + 0009 CHARACTER TABULATION(製表符)
  • U + 000A換行(LF)
  • ù + 000C FORM FEED(FF)
  • U + 0020 SPACE
  • 忽略該角色。
  • U + 002F SOLIDUS(/)
    切換到自關閉開始標記狀態。
  • U + 003E GREATER-THAN SIGN(>) 切換到數據狀態。發出當前標記令牌。
    大寫ASCII字母
  • 開始當前標記令牌中的新屬性。將該屬性的名稱設置爲當前輸入字符的小寫版本(將0x0020添加到字符的代碼點),並將其值賦給空字符串。切換到屬性名稱狀態。
  • U + 0000 NULL
  • 解析錯誤。在當前標記標記中開始一個新屬性。將該屬性的名稱設置爲U + FFFD REPLACEMENT CHARACTER字符,並將其值賦給空字符串。切換到屬性名稱狀態。
  • U + 0022引號(「)
  • U + 0027撇號(')
  • U + 003C小於號(<)
  • U + 003D等號(=)
  • 解析錯誤。按照下面的「其他」條目處理它。
  • EOF
    解析錯誤。切換到數據狀態。重新編輯EOF字符。
  • 其他
    在當前標記標記中開始一個新屬性。將該屬性的名稱設置爲當前輸入字符,並將其值賦給空字符串。切換到屬性名稱狀態。

在簡單的話:

它說,除了製表符,換行符,換頁,空間,固相線,大於號,引號,撇號更大的所有文字和等號會被處理屬性名稱的一部分。就個人而言,我不會嘗試推動這個邊緣案例。

靈感來自:What characters are allowed in an HTML attribute name?

相關問題